用於組合多個檔案的批次檔案(名稱中帶有括號)

用於組合多個檔案的批次檔案(名稱中帶有括號)

背景:我正在使用 IFTTT 將 DC Metro 公告從 RSS 來源提取到我的 BBS 的文字檔案中。最大的問題是 IFTTT 無法覆蓋或附加到文件,因此我在目錄中獲得了文件的多個副本:

red.txt
red (1).txt
red (2).txt

等等。我將文件的原始(非)版本保留為佔位符,並專注於全天合併其他文件。對於一組文件,此方法有效:(x).txt

if exist "red (1).txt" for %%f in ("red (*.txt") do type "%%f" >> red_line.txt & del "%%f"

由於有多組文件(每個文件有不同的顏色或顏色組合),我嘗試建立一個父for/do循環來循環不同的 Metro 線路(以使程式碼更易於維護)。我總是可以為每條地鐵線添加上述的新實例。

我認為檔案名稱中的括號幹擾了循環中的括號,因為它立即中斷。一定有辦法逃脫括號,但我嘗試過斜線和插入符等;似乎沒有任何作用。我希望有更好的方法來做到這一點。

這是程式碼的基礎,沒有我已經嘗試過的無數事情:

FOR %%A IN (red green orange red_orange) DO  ( 
if exist "%%A (1).txt" for %%B in ("%%A (*.txt") do type "%%B" >> %%A_line.txt & del "%%B"
)

這是我得到的一個例子:

C:\sbbs\Dropbox\bbs\ifttt>(if exist "red (1).txt" for %B in ("red (*.txt") do type "%B" 1>>red_line.txt & del "%B" )

C:\sbbs\Dropbox\bbs\ifttt>(if exist "green (1).txt" for %B in ("green (*.txt") do type "%B" 1>>green_line.txt & del "%B" )

C:\sbbs\Dropbox\bbs\ifttt>(if exist "orange (1).txt" for %B in ("orange (*.txt") do type "%B" 1>>orange_line.txt & del "%B" )

C:\sbbs\Dropbox\bbs\ifttt>(if exist "yellow (1).txt" for %B in ("red_orange (*.txt") do type "%B" 1>>red_orange_line.txt & del "%B" )

我看到的結果部分很無聊:

 do type "%B" 1>>

這個「1」一定是來自(1),對吧?

我還注意到我的空格沒有被帶入結果中:

do type "%B" 1>>orange_line.txt

答案1

我會在 PowerShell 而不是 CMD 中執行此操作。在 PowerShell 中,為所有資料夾建立一個外部循環,從每個資料夾中取得檔案作為檔案物件數組,然後您就不必關心名稱了。

合併到一個新檔案並刪除已處理的檔案 - 或者如果您可能再次需要它們,請將它們移至檔案中。

相關內容