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


0

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

V:/fixed name/ABC/fixed Name/

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

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

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

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

Ура, никма

Ответы:


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).


Спасибо за вашу помощь. Поскольку я очень новичок в этой теме, как я могу определить каталог в предоставленном вами коде? Моему каталогу нужен только один шаблон, поэтому я думаю, что ваше решение может сработать, если я смогу
ввести

Просто вызовите этот пакетный файл с одним аргументом. Например mkwild.cmd fixedpath\*\newfolder, создаст одну папку newfolderпод каждой папкой в fixedpath. Заключите аргумент в «...», если он содержит пробелы.
user1016274

Еще раз спасибо. Я создал пакетный файл с предоставленным вами кодом, сохранил его и попытался вызвать файл с помощью mkwild.cmd fixedpath * \ newfolder. Тем не менее, я продолжаю получать сообщение об ошибке, что файл не существует ...
Nickma

Вы назвали командный файл "mkwild.cmd"? Существует ли «fixedpath»? Обратите внимание, что правильным аргументом будет «fixedpath * \ newfolder», то есть с двумя обратными слешами.
user1016274

Да. У вас есть идеи, почему это не работает? : /
Nickma
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.