PDA

Visualizza la versione completa : [BATCH] Ciclo per eseguire comando N volte


soniettabrasile
13-01-2011, 18:52
Ciao a tutti! ho bisogno di una mano perchè ci sto :dhò: da un po' di tempo e non riesco a risolvere la situazione:
Ho creato un file batch che mi esegue il backup di un file, ma il mio problema è che devo eseguire questo scritp tante volte quanti sono dei file .db in un cartella. Mi provo a spiegare meglio con la parte di codice su cui sono bloccata:



cd C:\DataBases
for %%a in (*.db) do call C:\Backup.bat %%a


I problemi sono:
1) la variabile %%a contiene ovviamente tutto il nome del file (Esempio DataBase.db), mentre invece mi occorre solo il nome del file senza estensione (dall'esempio di prima, mi serve solo DataBase) ;
2)Lanciando questo mini-script mi viene eseguito correttamente Backup.bat, ma poi non ritorna al batch chiamante e quindi non esegue lo script anche per tutti gli altri file che incontra.
Qualcuno sa aiutarmi??
grazie milleeeee

lolide
14-01-2011, 10:18
beh se chiami un altro bat non torna all'originale, non c'è un'idea di "stack" con i file batch.

comunque
start /WAIT dovrebbe fare al caso tuo.

Se non è così, allora devi fare la routine di backup dentro il for senza chiamare un batch esterno.

per prendere il nome del file usa questo codice


FOR /F "delims=." %nome IN ("*.db") DO echo %nome

soniettabrasile
14-01-2011, 10:56
Intanto grazie mille per la risposta..
per quanto riguarda il comando start /wait funziona alla perfezione..
purtroppo però ho qualche problemino con il for.. ho effettuato una prova dando solo questi di comandi

for /F "delims=." %%n in ("*.db") do echo %%n

Ma mi viene visualizzato solo un'*...non mi prende i nomi dei file... :confused:
Ah, ho sostituito %nome con %%n perchè altrimenti non mi prendeva la variabile...

lolide
14-01-2011, 11:31
Originariamente inviato da soniettabrasile
Intanto grazie mille per la risposta..
per quanto riguarda il comando start /wait funziona alla perfezione..
purtroppo però ho qualche problemino con il for.. ho effettuato una prova dando solo questi di comandi

for /F "delims=." %%n in ("*.db") do echo %%n

Ma mi viene visualizzato solo un'*...non mi prende i nomi dei file... :confused:
Ah, ho sostituito %nome con %%n perchè altrimenti non mi prendeva la variabile...



FOR %%n in (*.*) do FOR /F "delims=." %%a in ("%%n") DO echo %%a

soniettabrasile
14-01-2011, 13:02
babbaaaa biaaaaaaaaa!! grandissimo!!!
veramente grazie grazie grazie..


sei troppo forte! :unz:

Loading