假设我有一个名为的目录,Grandparent
此目录内有多个其他文件夹,,Parent 1
等等。我的目标是在每个文件夹中Parent 2
创建一个新文件夹。Child
Parent
例如我所拥有的:
Grandparent/
Parent1/
Parent2/
...
...
ParentX/
我想要的是:
Grandparent/
Parent1/
Child/
Parent2/
Child/
...
...
ParentX/
Child/
有没有办法在 CMD 中执行此操作?(注意:我无法下载 Powershell 或任何其他可以让我的生活更轻松的便捷工具,我只能使用默认的 Windows 命令提示符)
更新
根据评论中的链接,我尝试了以下操作:
for /r %%a in (.) do (
rem enter the directory
pushd %%a
echo In Directory:
mkdir testFolder
cd
rem leave the directory
popd
)
但是,这会testFolder
在每一个新创建的文件夹:
Grandparent/
Parent1/
Child/
Child/
Child/
...
Parent2/
Child/
Child/
Child/
...
...
...
ParentX/
Child/
Child/
Child/
...
Child/
Child/
Child/
...
答案1
但是,这会在每个新创建的文件夹中创建文件夹 testFolder
这是因为for /r
每次创建新目录时,该命令都会更新要处理的文件列表,因此只有当您想要访问固定的目录列表时它才真正有用。
这是一个批处理文件 (test.cmd),可以执行您想要的操作。将其放在目录中Grandparent
。
测试.cmd:
@echo off
setlocal
for /f "usebackq tokens=*" %%a in (`dir /b /a:d`) do (
rem enter the directory
pushd %%a
echo In Directory: %%a
md child
rem leave the directory
popd
)
endlocal
笔记:
dir /b /a:d
只评估一次,因此目录列表是固定的for /f
将循环遍历该固定列表一次。
示例输出:
> test
In Directory: Documentation
In Directory: subdir
In Directory: test
In Directory: test with space
In Directory: test1
> dir /b /a:d /s child
F:\test\Documentation\child
F:\test\subdir\child
F:\test\test\child
F:\test\test with space\child
F:\test\test1\child