【问题标题】:Directory list for FOR loop in msdos .bat filemsdos .bat 文件中 FOR 循环的目录列表
【发布时间】:2013-02-08 03:02:03
【问题描述】:

我正在寻找如何获取在 FOR 循环中使用的所有目录的列表。

到目前为止,我已经解决了:

set folderList = (folder1 folder2 folder3 folder4)
FOR %%i in %folderList% do zip %%i D:\...my_path...\%%i\*.*

是否可以动态生成文件夹列表?

【问题讨论】:

  • folder1 folder2 folder3 文件夹在同一个目录吗?例如。所有文件夹都位于 C:\

标签: for-loop batch-file directory dos


【解决方案1】:

假设你想列出 c:\temp 的子目录

for /f %%i in ('dir c:\temp /ad /b') do echo %%i

这将列出 c:\temp 的文件夹名称,如果您想递归地获取它,只需将 /s 添加到 dir 命令:

for /f %%i in ('dir c:\temp /ad /b /s') do echo %%i

至于@dbenham 评论(谢谢)正确处理带空格的目录只需将 tokens=* 添加到 for :

 for /f "tokens=*" %%i in ('dir c:\temp /ad /b') do echo %%i

【讨论】:

  • 如果文件夹名称包含空格,您发布的解决方案将无法正常工作。
【解决方案2】:

请尝试以下代码:

for /d %%F in ("d:\...my_path...\*") do zip "%%~nxF" "%%F\*.*"

【讨论】:

    【解决方案3】:

    我不确定有什么不同,但上面列出的双 %% 都不起作用。

    然而,这对我有用:

    for /f "tokens=*" %i in ('dir c:\temp /ad /b') do echo %I
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 2022-01-23
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多