PDA

Visualizza versione completa : [ALTRO] Compilare una batch con "etichetta volume".


Tecno214
16-04-2007, 10.24.18
E' possibile usare, in alternativa al comando C:\(directory) una sintassi che permatta di asegnare a c: la sua etichetta volume, per esempio...

dove c:=SIstema

SISTEMA\(directory)

Mi serviva perchè ho complilato uno script di backup dove i miei dati vangono copiati nel disco esterno che però può prendere lettere diverse a seconda delle periferiche USB che ho collegato al pc; a volte può prendere M:, a volte N: ecc.....
Abbinando allo script l'etichetta di volume avrei risolto ogni mio problema!!

Sergio Neddi
16-04-2007, 22.05.56
Uhm... in pratica vorresti trovare la maniera di indirizzare un drive, invece che tramite la sua lettera, tramite l'etichetta di volume.
CHe sappia io non si può, il sistema che generalmente uso per riconoscere a quale lettera è un determinato volume è quello, da batch, di scansionare le lettere possibili testando la presenza di un determinato file che dev'essere presente sull'unità in questione affinché venga riconosciuta.
Ad esempio, se io metto un file fittizio di nome backup.txt nell'unità che mi interessa lo posso testare con questo batch:
@echo off
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\backup.txt (
rem mettere qui le istruzioni di salvataggio sull'unità %%I
echo UNITA' %%i
)

Tecno214
17-04-2007, 11.11.49
@echo off
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\backup.txt copy %%i:\*.* /e:
echo UNITA' %%i

Questa è la batch che ho compilato grazie al tuo aiuto che però non ne vuol sapere di funzionare...
Il file backup.txt è posto in c: e, lanciandola, mi sarei aspettato una copia totale di c: ma invece niente...

Sicuramente saprai indicarmi l'errore dato che con il FOR e la VARIABILI non ho molto a che fare!

GRazie Sergio!!

Sergio Neddi
17-04-2007, 13.32.16
Allora... stasera da casa lo vedo meglio, qui, in fretta dal lavoro vedo che:

1) il backup.txt lo devi mettere sul drive di destinazione in modo che il batch conosca qual'è la destinazione. Il tuo problema era infatti conoscere la destinazione, giusto?
2) prova con xcopy, nel tuo caso xcopy /e c:\sorgente %%i:\destinazione\
(o viceversa se devi copiare in C: dal disco esterno: xcopy /e %%i:\sorgente c:\destinazione\
Se non vuoi richieste di conferma della sovrascrittura della destinazione usa anche lo switch /y, cioè xcopy /e /y ecc, ecc.

Tecno214
18-04-2007, 17.40.38
@echo off
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\backup.txt xcopy /e /y C:\Documents And Settings\mariancini\documenti %%i:\documenti\

echo UNITA' %%i>c:\pippo.txt

Ecco la nuova batch, alla quale ho aggiunto la generazione di un log "pippo".
Il bat non mi funziona e mi restituisce nel log questo risultato

UNITA %i

Suggerimenti?

roberto45
18-04-2007, 19.38.17
Prova a lavorare su questa traccia

REM===============================================
@echo off

if "%1"=="" goto prima
goto seconda

: prima
del esegui.bat
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\test.tst call prova.bat %%i
rem ovviamente su unica riga !!!

goto fine

:seconda
echo xcopy C:/*.* %1:/backup >> esegui.bat
esegui

:fine
rem ================================================== ==