Как рекурсивно создать подпапку в каждой папке каталога в CMD
Допустим, у меня есть каталог с именем 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
каталог.
test.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
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- dir - Показать список файлов и подпапок.
- for / f - Циклическая команда против результатов другой команды.
- md - Make Directory - создает новую папку.
- pushd - изменить текущий каталог / папку и сохранить предыдущую папку / путь для использования командой POPD.
- popd - изменить каталог обратно на путь / папку, которая была сохранена последней командой PUSHD.