for /d /r "dirname" %%a in (*) do if /i "%%~nxa"=="install" echo %%a
может быть полезно для вас.
Ваше требование неясно.Вы хотите скопировать файл в подкаталоги install
только ...\234235234\..
или ...\*\...
?
Заменить dirname
именем начального каталога, будь то ...\234235234\..
или C:\Users\Administrator\AppData\Roaming\base\command
и команда, которую я показал, сообщит обо всех каталогах install
, содержащихся в dirname
.Все, что вам нужно сделать, это изменить echo
на соответствующую команду copy
- см. copy /?
в приглашении.Вы можете подавить ответы copy
, добавив >nul 2>nul
(подавление сообщений и подавление сообщений об ошибках)
for /d /r
с помощью *
, так как элемент списка будет обрабатывать список всех подкаталогов, начиная с назначенногокаталог.Команда if
выбирает только листовые каталоги, которые соответствуют install
в любом случае (/ i)
Поскольку
for /d /r ...
не обнаруживает и не обнаруживает скрытые каталоги, существует другой подход:
for /f "delims=" %%a in ('dir /s /b /ad "dirname" ') do if /i "%%~nxa"=="sub1" echo %%a
Который в данном случае должен быть
for /f "delims=" %%a in ('dir /s /b /ad "C:\Users\Administrator\AppData\Roaming\base\command" ') do if /i "%%~nxa"=="sub1" echo %%a
Команда dir
создает список в /b
основной (только для имени) форме, /s
, включая подкаталоги,Только /ad
каталогов (имена с установленным атрибутом directory
).Этот список обрабатывается построчно for /f
без разделителей, поэтому вся строка (включая пробелы, если есть) присваивается %%a
и отображается.