1

Мне нужно создать папку (называемую "посетитель") в каждой папке одной основной папки. Например, моя структура такова:

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

Мне нужно это:

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

Конечно, есть некоторые проблемы:

  1. Я не знаю общее количество папок в корневой папке
  2. Я не знаю настоящее имя каждой папки
  3. Я не могу использовать какое-либо программное обеспечение или установить что-либо еще, что идет с Windows XP (это для веб-сервера на стадии подготовки и производства)

Я думал о том, чтобы сделать это с помощью командного файла (используя for), но я не могу понять, как получить имена папок без анализа файла. Есть идеи?

3 ответа3

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 . Похоже, что это не страдает от проблем с рекурсией.

1

Перечислите все папки в файл:

dir /ad /b /s > dirlist.txt

Для каждого каталога запустите mkdir:

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

Удалить временный файл:

del dirlist.txt

(Можно использовать dir... непосредственно внутри цикла for , но существует риск бесконечной рекурсии.)

0

for имеет параметр /d который будет перечислять каталоги вместо файлов.

for /d %%i in (C:\Path\To\Root\*) do @md "%%i\visitor" должно сработать

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .