我需要在一个主文件夹的每个文件夹中创建一个文件夹(名为“visitor”)。例如,我的结构如下:
\idontknowthename1\
\idontknowthename2\
\idontknowthename3\
\idontknowthename4\
\idontknowthename5\
我需要这个:
\idontknowthename1\visitor
\idontknowthename2\visitor
\idontknowthename3\visitor
\idontknowthename4\visitor
\idontknowthename5\visitor
当然,也存在一些问题:
- 我不知道根文件夹中的文件夹总数
- 我不知道每个文件夹的真实名称
- 我无法使用任何软件或安装 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=
您也可以通过/s
向DIR
命令中添加来在子文件夹中创建访问者文件夹,即dir "%root_folder%" /ad /b /s
。这似乎不会遇到任何递归问题。
答案3
for
有一个/d
参数,它将列出目录而不是文件。
for /d %%i in (C:\Path\To\Root\*) do @md "%%i\visitor"
应该可以