пакетный файл для копирования файлов в указанные папки

385
Remus Rigo

У меня есть пакетный файл, который получает от 1 до 9 файлов (или более), и он должен скопировать эти файлы в набор папок. Может кто-нибудь мне помочь?

Я пытаюсь сделать что-то вроде этого:

for /L %%i in (1,1,9) do ( copy %%i "\Folder1" copy %%i "\Folder3" copy %%i "\Folder5" .... ) 

Скопировать файл1, переданный в качестве параметра% 1, во все папки назначения, затем файл 2 из% 2 и т. Д. Но я не знаю, что писать вместо %% 1 в процедуре do ()

0

2 ответа на вопрос

3
AFH

Хотя ответ LotPings будет работать, более простой ответ, который ближе к попытке в исходном вопросе и избегает неуклюжих goto, будет:

for %%i in (%*) do ( copy %%i "\Folder1" copy %%i "\Folder3" copy %%i "\Folder5" .... ) 

Здесь %*раскрывается полный список параметров, каким бы длинным он ни был, и forоператор учитывает любые кавычки, проходя по очереди все параметры, как указано. Опять же, нет никаких ограничений на 9 параметров, хотя пакетные файлы имеют общий максимум 255 параметров.

2
LotPings

Чтобы не ограничиваться 9 аргументами, я бы использовал цикл с goto и сдвигом, пока не осталось аргументов.

:: Q:\Test\2018\11\23\SU_1377880.cmd @Echo off :loop if "%~1"=="" goto :Eof if exist "%~1" ( copy %1 "\Folder1" copy %1 "\Folder3" copy %1 "\Folder5" ) else ( Echo %1 not found ) shift goto :loop 

Похожие вопросы