使用For / F在所有子目录中创建新文件夹

时间:2012-11-22 19:55:37

标签: batch-file

我正在尝试创建一个标准化的目录结构来准备驱动器,以便整理和迁移到新位置。我要做的是在驱动器的根目录中运行一个批处理文件,该文件在所有子目录中运行,并在每个子目录中创建一个名为“Archive”的新文件夹,准备好整理文件并稍后移动或删除。

我正在尝试使用带有MD命令的FOR / F来制作文件夹,但我真的很难理解语法。令牌和变量。我正在努力适应像

这样的东西
for /f "tokens=*" %a in ('dir /b /s /a-d') do @copy "%a" "c:\Single-Folder"

我从here用@md取代@copy取代了......但是我真的超出了我的深度。

任何提供的帮助非常感谢

2 个答案:

答案 0 :(得分:1)

您正在使用的命令:

dir /b /s /a-d

列出除目录之外的所有内容( - 符号否定该属性)。所以你必须使用正确的命令:

dir /b /s /ad

(亲自试试!)。

FOR /F一次读取dir命令的输出,一行文本。 tokens=*将获得整行(删除前导空格)。我想你需要这个:

for /f "tokens=*" %a in ('dir /b /s /ad') do @echo mkdir "%a\Archive"

如果您确定它是正确的,请删除echo命令以实际执行mkdir

答案 1 :(得分:1)

我认为你想要做的就是这种结构:

@Echo OFF

REM By Elektro H@cker

For /D /R "%SYSTEMDRIVE%\" %%#  in (*) do (MKDIR "%SYSTEMDRIVE%\Single-Folder\%%~p#")

Pause&Exit