CMD / пакетное получение базового имени для подпапки - PullRequest
2 голосов
/ 20 февраля 2012

Я хочу просмотреть все подпапки в c:\my_folder, проверить, существует ли указанный файл, затем создать (если не существует) папку в c:\copy (например, c:\copy\project1) и скопировать указанный файл.

Легко ли перебирать папки в пакетном файле (for /d %variable in ("path") DO command), но переменная содержит полный путь. Для создания новой папки мне нужно только базовое имя для подпапки. Как я могу получить это? Должен ли я написать еще один цикл, когда я удаляю другие символы? Есть ли более простой способ?

Ответы [ 2 ]

3 голосов
/ 20 февраля 2012

Если я вас правильно понимаю, вам нужно только имя папки.В этом случае это просто:

for /d %%d in (C:\my_folder) do echo %%~nxd
0 голосов
/ 21 февраля 2012

Что сказал Джои.С другой стороны, вы можете попробовать совершенно другой подход:

XCOPY "C:\my_folder\my_file" "C:\copy" /S /I

Это скопирует указанный файл из всех подпапок от C:\my_folder до C:\copy с сохранением структуры.Подпапки, которые не имеют my_file, не будут созданы в C:\copy.Переключатель /S указывает XCOPY искать my_file в подпапках.Параметр /I предназначен для того, чтобы убедиться, что C:\copy должна быть папкой, прежде чем продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...