批处理文件列出子文件夹中的所有电影文件,命名为#,A,B,C,D,通过Z.

时间:2017-02-26 11:34:25

标签: batch-file

多年前我曾经很好地使用批处理文件,但我从未学过如何做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 

1 个答案:

答案 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