2014-06-15 132 views
1

我希望遍歷多個文件夾並連接所有.html文件,並通過批處理文件輸出combined.html for EACH文件夾。循環遍歷每個文件夾並連接文件(輸出每個文件夾中的組合文件)

更好的是,我希望輸出組合的[文件夾名稱] .html。例如,對於Folder1,該文件夾中的輸出連接文件將爲combinedFolder1.html。

我已經進入每個文件夾通過在命令提示符下使用copy命令來連接文件:

copy *.html combined.html 

我怎麼能遍歷多個文件夾和級聯和輸出運行的複製命令combined.html(或合併[文件夾名稱] .html)爲每個文件夾使用批處理文件?謝謝。

回答

0

在主文件夾中啓動它。它應該做你需要的。

@echo off 
for /d /r %%a in (*) do (
    pushd "%%a" 
    echo "%%a" 
     copy *.html tmp.tmp >nul 
     move /y tmp.tmp "combined%%~nxa.html" >nul 
    popd 
) 
pause 
+0

能否請您解釋一下它做什麼,你怎麼跑之上?什麼是'/ d''/r''/y'用於? – vadimbog

+0

@vadimbog'/ d'收集目錄名稱,'/ r'遞歸執行。 '/ y'確保文件被覆蓋,如果它已經存在。該功能在問題中進行了描述。 – foxidrive

0

下面一行的命令應該做你需要的東西:

find . -type d ! -path '.' | xargs -i_folder sh -c "cd _folder; cat *html > combined\$(echo _folder | sed 's#.*/##').html"

我也將提到,上述假設你的目錄中不包含名稱中有空格。

在那麼它確實情況下,一些變化在這裏它應解決的問題:

find . -type d ! -path '.' -print0 | xargs --null -i_folder sh -c "cd \"_folder\"; cat *html > \"combined\$(echo _folder | sed 's#.*/##').html\""

+0

似乎問題有一個'Windows'標記,並且您的解決方案將不能在通用Windows中工作。 – foxidrive

+0

:)我的壞,沒有注意到。這也解釋了你的解決方案(不熟悉windows中的腳本)。 – vadimbog

相關問題