Batchdatei, um Dateien in angegebene Ordner zu kopieren

474
Remus Rigo

Ich habe eine Batchdatei, die 1 bis 9 Dateien (oder mehr) empfängt und diese Dateien in eine Reihe von Ordnern kopieren muss. Kann mir jemand helfen?

Ich versuche so etwas zu tun:

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

Kopieren Sie die als Parameter% 1 übergebene Datei1 in alle Zielordner, dann in die Datei2 von% 2 und so weiter. Ich weiß jedoch nicht, was in der do () - Prozedur anstelle von %% 1 geschrieben werden soll

0

2 Antworten auf die Frage

3
AFH

Obwohl die Antwort von LotPings funktionieren wird, wäre eine einfachere Antwort, die dem Versuch in der ursprünglichen Frage näher kommt und die Unbequemlichkeit vermeidet, Folgendes goto:

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

Hier wird %*die vollständige Parameterliste erweitert, und zwar so lange sie auch ist, und die forAnweisung berücksichtigt alle Anführungszeichen und führt nacheinander jeden Parameter wie angegeben aus. Auch hier gibt es keine Einschränkung auf 9 Parameter, obwohl Batchdateien insgesamt 255 Parameter haben.

2
LotPings

Um nicht auf 9 Argumente beschränkt zu sein, würde ich eine Schleife mit einem goto verwenden und verschieben, bis keine Argumente mehr übrig sind.

:: 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