Можно ли скопировать файл из каталога в подкаталог во всех других каталогах через командный файл cmd /? - PullRequest
2 голосов
/ 20 февраля 2012

Так что сценарий такой ...

У меня есть структура папок

 - C:\
     - DirectoryA 
         - SubdirA
             - File.xml     
     - DirectoryB    
         - SubdirB     
     - DirectoryC
         - SubdirC
     .
     .
     .

Мой вопрос: есть ли способ скопировать файл из SubdirA во ВСЕ подкаталоги всехдругие каталоги, в пакетном / cmd-файле, без массивного списка операторов копирования?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Извините, в этом вопросе есть пара неясных моментов.

Сначала я подумал, что вы хотите "скопировать файл из SubdirA во ВСЕ подкаталоги всех других каталогов" уровень, где файл , то есть, если SubdirB и / или SubdirC будут иметь подкаталоги ниже, файл НЕ будет скопирован в них;просто для SubdirB и SubdirC.Если существует DirectoryD, в котором нет другого подкаталога, файл НЕ будет скопирован в него.Приведенный ниже пакетный файл выполняет такой процесс:

@echo off
set "theFile=C:\DirectoryA\SubdirA\File.xml"

for /F "tokens=2 delims=\" %%a in ("%theFile%") do set "originDir=%%a"
cd \
for /d %%a in (*) do (
   if not "%%a" == "%originDir%" (
      pushd %%a
      for /d %%b in (*) do (
         copy "%theFile%" "\%%a\%%b"
      )
      popd
   )
)

Однако вы сказали позже: «Все каталоги будут на одном уровне, то есть непосредственно ниже C:», что противоречит вашему собственному примеру!Каталоги в этом примере расположены на два уровня ниже.

Обратите внимание, что этот пункт (уровень целевых каталогов) имеет решающее значение для правильной записи командного файла (в случае, если файл выше не решит вашу проблему).

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

Не создавая сам пакетный файл, вы захотите использовать «for / d», который будет перебирать каталоги, и помещать это в цикл, который может рекурсивно вызывать себя.

...