Вот команда, с которой можно начать:
FOR /F "delims=" %%D IN ('DIR /b /a:D /s C:\Parent\LIB') DO @ECHO COPY "C:\Parent\library.eds" "%%~D"
Как только все заработает так, как вы хотите, удалите часть @ECHO
, чтобы фактически сделать копию:
FOR /F "delims=" %%D IN ('DIR /b /a:D /s C:\Parent\LIB') DO COPY "C:\Parent\library.eds" "%%~D"
Дополнительная помощь для этих команд
HELP FOR
HELP DIR
Как это работает
FOR /F ... %variable IN ('command') DO otherCommand %variable...
Это позволяет вам выполнить command
и выполнить цикл по выходу. Каждая строка будет вставлена в %variable
и может быть расширена в otherCommand
столько раз, сколько вы хотите, где вам угодно. %variable
при фактическом использовании может иметь только однобуквенное имя, например %V
.
"delims="
Это позволяет игнорировать любые выходные данные с пробелами с помощью 'command'
, поэтому он правильно обрабатывает каталоги, в именах которых есть пробелы.
DIR /b /a:D /s C:\Parent\LIB
Будет выполнен поиск всех файлов в C:\Parent
с именем LIB
. Он будет рекурсивно проходить через подкаталоги из-за /s
. Он найдет только каталоги (из-за /a:D
). Он выведет их так, чтобы это было полезно для циклического воспроизведения, из-за /b
.
%%D instead of %D
Это требуется в пакетных файлах. Если бы вы сделали это в командной строке, вы бы использовали% P вместо этого.