For loop msdos.bat文件中for循环的目录列表

For loop msdos.bat文件中for循环的目录列表,for-loop,batch-file,directory,dos,For Loop,Batch File,Directory,Dos,我正在寻找如何获得所有目录列表中使用的FOR循环 到目前为止,我一直致力于: set folderList = (folder1 folder2 folder3 folder4) FOR %%i in %folderList% do zip %%i D:\...my_path...\%%i\*.* 是否可能动态生成folderList?假设您要列出c:\temp的子目录 for /f %%i in ('dir c:\temp /ad /b') do echo %%i 这将列出c:\temp的

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

到目前为止,我一直致力于:

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

是否可能动态生成folderList?

假设您要列出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 comment(谢谢)要正确处理带空格的dir,只需将tokens=*添加到for:

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

请尝试以下代码:

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

我不知道有什么不同,但上面列出的双%%都不起作用

然而,这对我来说是可行的:

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

folder1 folder2 folder3文件夹是否在同一目录中?例如,所有文件夹都位于C:\中。如果文件夹名称中包含空格,则您发布的解决方案将无法正常工作。