如何使用批处理文件创建多个文件夹?

如何使用批处理文件创建多个文件夹?

我需要在一个主文件夹的每个文件夹中创建一个文件夹(名为“visitor”)。例如,我的结构如下:

\idontknowthename1\
\idontknowthename2\
\idontknowthename3\
\idontknowthename4\
\idontknowthename5\

我需要这个:

\idontknowthename1\visitor
\idontknowthename2\visitor
\idontknowthename3\visitor
\idontknowthename4\visitor
\idontknowthename5\visitor

当然,也存在一些问题:

  1. 我不知道根文件夹中的文件夹总数
  2. 我不知道每个文件夹的真实名称
  3. 我无法使用任何软件或安装 Windows XP 附带的任何其他东西(它用于暂存和生产中的 Web 服务器)

我原本想用批处理文件 (使用for) 来执行此操作,但我不知道如何在不解析文件的情况下获取文件夹的名称。有什么想法吗?

答案1

将所有文件夹列到一个文件中:

dir /ad /b /s > dirlist.txt

对于每个目录,运行mkdir

for /f "tokens=*" %%a in (dirlist.txt) do mkdir "%%~a\visitor"

删除临时文件:

del dirlist.txt

(可以在循环dir...内直接使用for,但存在无限递归的风险。)

答案2

这似乎适用于带有空格的文件夹名称。

@echo off

set root_folder=%USERPROFILE%\Desktop\test

for /f "tokens=*" %%a in ('dir "%root_folder%" /ad /b') do @if not exist "%%~fa\visitor" md "%%~fa\visitor"

set root_folder=

您也可以通过/sDIR命令中添加来在子文件夹中创建访问者文件夹,即dir "%root_folder%" /ad /b /s。这似乎不会遇到任何递归问题。

答案3

for有一个/d参数,它将列出目录而不是文件。

for /d %%i in (C:\Path\To\Root\*) do @md "%%i\visitor" 应该可以

相关内容