多年前我曾经很好地使用批处理文件,但我从未学过如何做FOR循环。通过查看其他示例,我认为我走的是正确的道路,但是我无法完全理解如何做到这一点。
这是我的工作批处理文件,只是它只会导致最后一个子文件夹(在我的情况下是Z文件夹)被列出,因为我不知道如何一次只使用一行来自“ folders.txt“file:
@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 :(得分: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建议 EDIT :
FOR /D
FOR /D %%a in (*) DO (
echo.
echo - - - - - - - %%a - - - - - - -
echo.
dir %%a/OGNS /B
)
HELP
信息:
FOR / D%变量IN(设置)DO命令[命令参数]
如果set包含通配符,则指定匹配目录 名称而不是文件名。
请注意,所有变量在执行括号之前都会展开,因为它被视为一个命令
然后继续使用:END
:END
start notepad "- MOVIELIST.TXT"
exit
此处无需使用%FOLDER%
和folders.txt