file batch per copiare i file in cartelle specificate


0

Ho un file batch che riceve da 1 a 9 file (o più) e ha bisogno di copiare quei file in una serie di cartelle. Qualcuno mi può aiutare?

Sto provando a fare qualcosa del genere:

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

Copia file1 passato come parametro% 1 a tutte le cartelle di destinazione, quindi file2 da% 2 e così via ... Ma non so cosa scrivere invece di %% 1 nella procedura do ()

Risposte:


3

Anche se la risposta di LotPings funzionerà, una risposta più semplice, che è più vicina al tentativo nella domanda originale ed evita il sgraziato goto, sarebbe:-

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

Qui %* si espande nella lista completa dei parametri, per quanto lunga sia, e for la dichiarazione tiene conto di ogni citazione, passando a turno attraverso ogni parametro come dato. Anche in questo caso non vi è alcuna restrizione a 9 parametri, sebbene i file batch siano soggetti a un massimo complessivo di 255 parametri.


2

Per non essere limitato a 9 argomenti, userei un ciclo con un goto e cambio fino a quando non ci sono argomenti a sinistra.

:: 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.