Добавление подпапок в папку с подстановочным именем каталога

0

Я хотел бы добавить подпапки с одинаковыми именами в несколько папок, которые в настоящее время имеют следующую структуру:

V:/fixed name/ABC/fixed Name/

где «Азбука» представляет собой изменяющуюся комбинацию из трех букв.

Я нашел следующий код, но он не может принять мой «*» подстановочный знак для «ABC».

FOR /d %A IN (V:/fixed name/ABC/fixed Name/) DO mkdir "%A\14c"

Любая помощь будет оценена.

Ура, никма

Nickma
источник

Ответы:

1

Из командной строки:

FOR /D %A IN ("V:\fixed name\*") DO mkdir "%A\fixed name\14c"

В пакетном файле:

FOR /D %%A IN ("V:\fixed name\*") DO mkdir "%%A\fixed name\14c"
Томер Годингер
источник
Спасибо за вашу помощь. К сожалению, это не решает мою проблему: у меня есть фиксированное имя, затем подстановочный знак, а затем фиксированное имя для каталога, в который я хочу добавить подпапку. У вас есть какое-то решение для этого?
Никма
Я проверил это на той же структуре каталогов, что вы подробно описали. Для меня это была «Тестовая папка \ ABC \ fixed name \ 14c». Вы уверены, что это то, что у вас есть, и это не сработало?
Томер Годингер
Теперь я тестировал с точными названиями же директории , которые вы перечислили здесь и копировать / вставить мой ответ. Это создало каталоги просто отлично. Вы можете увидеть результаты здесь .
Томер Годингер
Обратите внимание, что mkdirкоманды не были набраны вручную; FORцикл их создал. Если вы поместите его в пакетный скрипт и поставите ECHOперед OFFним знак @ или установите его, то он не будет отображать команды, которые он генерирует и выполняет.
Томер Годингер
Я просто попробовал еще раз, и это действительно сработало, хотя я не знаю, почему это не сработало ... Во всяком случае, большое спасибо :)
Nickma
1

Это будет работать, но разрешено только ОДИН «*»:

@echo off
setlocal
set pre=
set post=
set pattern=%~1
for /f "tokens=1,2 delims=*" %%p in ("%pattern%") do (
   set pre=%%p
   set post=%%q
)
pushd %pre%
for /f %%d in ('dir /b /ad') do @md %%d%post% && echo added: %%d%post%
popd  

Путь до подстановочного знака должен существовать. Здесь мы ищем все папки (= подстановочный знак) и добавляем путь, следующий за аргументом подстановочного знака. Это также может быть дерево папок ( mkwild C:\users\me\test\*\first\second).

user1016274
источник
Спасибо за вашу помощь. Поскольку я очень новичок в этой теме, как я могу определить каталог в предоставленном вами коде? Моему каталогу нужен только один шаблон, поэтому я думаю, что ваше решение может сработать, если я смогу
ввести
Просто вызовите этот пакетный файл с одним аргументом. Например mkwild.cmd fixedpath\*\newfolder, создаст одну папку newfolderпод каждой папкой в fixedpath. Заключите аргумент в «...», если он содержит пробелы.
user1016274
Еще раз спасибо. Я создал пакетный файл с предоставленным вами кодом, сохранил его и попытался вызвать файл с помощью mkwild.cmd fixedpath * \ newfolder. Тем не менее, я продолжаю получать сообщение об ошибке, что файл не существует ...
Nickma
Вы назвали командный файл "mkwild.cmd"? Существует ли «fixedpath»? Обратите внимание, что правильным аргументом будет «fixedpath * \ newfolder», то есть с двумя обратными слешами.
user1016274
Да. У вас есть идеи, почему это не работает? : /
Nickma