msdos中.bat文件的FOR循环目录列表

4

我希望了解如何获取所有目录列表以在FOR循环中使用。

到目前为止,我的解决方案是:

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

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


这些文件夹 folder1、folder2 和 folder3 是否在同一个目录下?例如,它们都位于 C:\ 目录下。 - Dale
3个回答

6
假设您想列出 c:\temp 的子目录。
for /f %%i in ('dir c:\temp /ad /b') do echo %%i

这将列出c:\temp文件夹的文件夹名称,如果您想要递归获取它,请在dir命令后添加/s:
for /f %%i in ('dir c:\temp /ad /b /s') do echo %%i

针对@dbenham的评论(谢谢),为了正确处理带有空格的目录,只需在for语句中添加tokens=*:

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

如果文件夹名称包含空格,则您发布的解决方案将无法正常工作。 - dbenham

2
请尝试以下代码:
for /d %%F in ("d:\...my_path...\*") do zip "%%~nxF" "%%F\*.*"

0

我不确定有什么不同,但上面列出的双%%都无法正常工作。

然而,这对我有效:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接