2017-02-26 27 views
1

多年前,我曾對批處理文件非常好,但我從來沒有學會如何做FOR循環。從其他例子看,我認爲我走在正確的道路上,但我無法準確地掌握如何去做。批處理文件列出子文件夾中的所有電影文件命名#,A,B,C,D,通過Z

這裏是我的工作批處理文件,只是它只會導致列出最後一個子文件夾(我的Z文件夾),因爲我不知道如何一次只使用一行「folders.txt」 文件:

@echo off 

echo - - - LIST GENERATED: %DATE% - - - > "- MOVIELIST.TXT" 

dir /B /A:D >folders.txt 
for /F "delims=" %%a in (folders.txt) do set FOLDER=%%a 

:BUILD_LIST 
echo. >> "- MOVIELIST.TXT" 
echo - - - - - - - %FOLDER% - - - - - - - >> "- MOVIELIST.TXT" 
echo. >> "- MOVIELIST.TXT" 
dir %FOLDER%/OGNS /B >> "- MOVIELIST.TXT" 

:END 
del "folders.txt" 
set FOLDER= 
start notepad "- MOVIELIST.TXT" 
exit 
+0

_「我以前在批處理文件很多年前都很不錯,但我從來沒有學會如何做FOR循環」_ **'<-' **這是一個 矛盾! – Aacini

回答

2

這是沒有必要的dir輸出重定向到folders.txt。只需使用FOR命令爲您完成。

您還可以使用括號來使用>> "- MOVIELIST.TXT"

因此減少,

FOR /F "delims=" %%a in ('dir /B /A:D') DO (
    (
     echo. 
     echo - - - - - - - %%a - - - - - - - 
     echo. 
     dir %%a/OGNS /B 
    )>> "- MOVIELIST.TXT" 
) 

您還可以包括你以前ECHO內:

@echo off 
(
    echo - - - LIST GENERATED: %DATE% - - - 
    FOR /F "delims=" %%a in ('dir /B /A:D') DO (
     echo. 
     echo - - - - - - - %%a - - - - - - - 
     echo. 
     dir %%a/OGNS /B 
    ) 
)> "- MOVIELIST.TXT" 

另外,使用該 編輯 Squashman建議: FOR /D

FOR /D %%a in (*) DO (
    echo. 
    echo - - - - - - - %%a - - - - - - - 
    echo. 
     dir %%a/OGNS /B 
) 

HELP信息:

FOR IN/d%變量(組)DO命令[命令參數]

如果組包含通配符,則指定用於匹配目錄 名稱而不是文件名稱。

注意,所有的變量都在括號之前擴大執行,因爲它是作爲一個命令

後,你繼續你:END

:END 
start notepad "- MOVIELIST.TXT" 
exit 

這裏,那麼它處理沒有必要使用%FOLDER%folders.txt

+0

哇!太優雅了!謝謝soooooo多! – Thaum

+0

爲什麼不使用FOR/D? – Squashman

+0

我想另一種方法可以進一步修改你的'DIR'命令 – loadingnow

相關問題