PDA

View Full Version : [DOS] copiare file se il nome cartella contiene una certa parola


SignorWolf
27-08-2010, 07:29
Ciao a tutti,

periodicamente ho bisogno di aggiornare su circa 40 pc delle dll di un software gestionale. Ora, farlo a mano sui pc singoli è un suicidio e volevo creare uno file bat da mandare a ogni utente e farglielo eseguire a ogni release delle nuove dll.

il mio problema è che i file devono essere copiati solo nelle cartelle che contengono la parola pippo e non nelle altre. dico così perchè sono installazioni diverse e molti pc hanno le cartelle che contengono le stesse cose ma i nomi delle cartelle appunto non sono tutti uguali.

esempio:

cartella principale: PLUTO
i file devono essere copiati solo nelle sottocartelle che contengono la parola PIPPO

c:\programmi\PLUTO\ciaoPIPPO
c:\programmi\PLUTO\PIPPOciao
c:\programmi\PLUTO\ciaoPAPERINO

io devo essere in grado di far copiare i file solo in ciaoPIPPO e PIPPOciao.

spero di essermi spiegato :)

zuper
27-08-2010, 09:07
cd c:\programmi\PLUTO\*PIPPO*

if not ERRORLEVEL 1 copy blablabla

SignorWolf
27-08-2010, 10:16
di sicuro sbaglio io:

-------------------------------------------------------------
cd C:\Documents and Settings\stage\Desktop\PLUTO\*PIPPO*

if not ERRORLEVEL 1 copy C:\Documents and Settings\stage\Desktop\test.txt C:\Documents and Settings\stage\Desktop\PLUTO\*PIPPO*
-------------------------------------------------------------

il file lo copia, ma non nelle cartelle di test, ma in PLUTO. e lo modifica così: test.txtPIPPO

zuper
27-08-2010, 10:50
di sicuro sbaglio io:

-------------------------------------------------------------
cd C:\Documents and Settings\stage\Desktop\PLUTO\*PIPPO*

if not ERRORLEVEL 1 copy C:\Documents and Settings\stage\Desktop\test.txt C:\Documents and Settings\stage\Desktop\PLUTO\*PIPPO*
-------------------------------------------------------------

il file lo copia, ma non nelle cartelle di test, ma in PLUTO. e lo modifica così: test.txtPIPPO

cd C:\Documents and Settings\stage\Desktop\PLUTO\*PIPPO*

if not ERRORLEVEL 1 copy "C:\Documents and Settings\stage\Desktop\test.txt"

se col cd sei già nella cartella nn è necessario specificare la destinazione :)

SignorWolf
27-08-2010, 11:01
fantastico grazie! ha funzionato! ma non completamente..

PLUTO è fatta così:

PLUTO\canePIPPO
\PAPERINO
\PIPPO

io ho bisogno che copi in tutte le cartelle che contengono PIPPO, ma l'ha copiato solo in canePIPPO

zuper
27-08-2010, 13:19
uhm allora è leggermente + complesso e cambierei strategia :)

vai nella cartella PLUTO, che mi pare certa come nome,

li dentro lanci un ciclo for su tutte le cartelle che contengono la stringa "PIPPO" e in queste copi la roba :)


cd PLUTO

for /F %c in ('dir /A:D /B^|find "PIPPO"') do copy "C:\Documents and Settings\stage\Desktop\test.txt" %c

SignorWolf
27-08-2010, 14:43
ecco così è perfetto!

ho solo dovuto aggiungere un altro % a %c e poi è andato bene.

grazie mille, sei stato gentilissimo!