我有兩個.txt文件。一個包含數字,另一個包含文件路徑。我想將這兩個文件合併爲一個.csv文件。組合是基於數字(來自nrs.txt)在文件路徑的字符串(nodups.txt)中。批處理文件中的嵌套/ F循環和If語句
現在我對這個下面的代碼:
@setlocal enableextensions enabledelayedexpansion
for /F %a IN (Output\nrs.txt) DO (
SET "nrs=%a"
for /F %b IN (Output\nodups.txt) DO (
SET "pathstring=%b"
SET csvdelim=,
IF NOT x!pathstring:%nrs%=""!==x%pathstring% %nrs%,%pathstring%>>new2017.txt
)
)
@endlocal
不過,我一直有與代碼以下問題:
- 的pathstring似乎從來就沒設置。 (當我運行沒有if語句的代碼時,
nrs
變量被設置,但是the pathstring is set to %b
)。我已經在這裏看到了很多可能的解決方案,但似乎沒有一個適用於我(設置變量,如!var!
和使用usebackq
)。 - 第二個for循環中的IF語句獲取以下錯誤消息
=""!==x%pathstring% was unexpected at this time
。=""
應該刪除nr。從路徑(如果有的話)。當我用其他東西替換「」時,它仍然不起作用。
文件內容是:
文件nrs.txt:
12345
12245
16532
nodubs.txt:
C:\tmp\PDF_16532_20170405.pdf
C:\tmp\PDF_1234AB_20170405.pdf
C:\tmp\PDF_12345_20170506.pdf
所需的輸出:
12345, C:\tmp\PDF_12345_20170506.pdf
16532, C:\tmp\PDF_16532_20170405.pdf
我真的很希望有人能幫助我解決這個問題!
我更喜歡這個解決方案,因爲它對我來說更加清楚,至於它是如何工作的(以及是否有任何改變,我知道在哪裏做出調整)。但是,如果我像這樣運行它,我不會得到任何輸出。如果我刪除了@echo off,我得到: 'C:\ Path \ Output>(如果定義了nodubs [12345] echo 12345,!nodubs [12345]!) C:\ Path \ Output> (如果定義的結節[12245]回波12245,結節[12245]!) C:\ Path \ Output>(如果定義結節回波16532,!結節!)' – Coen
您可以刪除括號它包圍了for和重定向,也就是說,通過'for ...)'改變'(for ...))> new2017.txt',然後在echo的末尾插入'>> new2017.txt'重定向%% a,...'行。 – Aacini
非常感謝! – Coen