2012-07-27 72 views
0
  • 「主」 的文件夾
    • 文件夾 - 「其他」
      • 文件夾 - 「A」
        文件夾 - 「B」
        內容合併 (...)
        文件夾 - 「N」

嗨,我有一個主文件夾,一個輔助文件夾和它的幾個孩子名爲「文件夾-A,文件夾-B ...文件夾-N」。每個孩子都有txt文件,其中包含大量信息。批次搜索TXT,提取內容,在一個單一TXT

我想讀取每個文件夾(僅文件夾A到N),收集每個txt中的信息併合並該信息以製作Big.txt。用戶還會知道分析和合並了多少個txt文件。

目前沒有好的結果。任何幫助?

@echo off 
set DRV1=c:\Main\Other 
set DRV2=c:\Big 
cd %DRV1% 
     setlocal enabledelayedexpansion 
     set /a count=0 
      for %%f in (*.txt) do (
      for /f "delims= " %%a in (%%f) do ( 
      set /a count+=1 
      echo %%a >> %DRV2%\Big.txt 
     ) 
    ) 
endlocal 
echo There were processed %count% txt files ... 
+0

你是什麼意思_「沒有好結果」_?你有什麼? – 2012-07-30 10:04:15

回答

1

有一對夫婦的問題在這裏:

  • 首先,你錯過了你要掃描.txt文件的目錄迭代。
  • 然後,您嘗試在內部FOR循環中一行一行地讀取文件,但這並不工作 - 因爲您可以使用TYPE來編寫/追加每個.txt文件的內容到另一個文件。
  • 最後,你不需要SetLocal EnableDelayedExpansion完成這個任務 - 它甚至可能會導致問題如果有任何txt文件中有一個感嘆號!在文件名 - 驚歎號將被推遲擴張,因爲CMD.EXE認爲可以吃它是變量名稱的一部分,會損壞文件名,從而導致文件內容不包含在Big.txt中。順便說一下,我不知道,它之前打我解決方案擺弄 - 因爲我實際上有文件名中帶有感嘆號的文本進行測試:)

長話短說,這裏是我最後的結果:

@ECHO OFF 
SET DRV1=c:\Main\Other 
SET DRV2=c:\Big 
SET /a count=0 
:: iterate over all directories in %DRV1% 
FOR /f "tokens=*" %%F IN ('dir /b /a:d %DRV1%') DO ( 
    :: for each directory, iterate over all .txt files 
    FOR %%G IN (%DRV1%\%%F\*.txt) DO (
     SET /a count+=1 
     TYPE %%G >> %DRV2%\Big.txt 
    ) 
) 
ECHO There were processed %count% txt files ...