Come altri hanno già detto, è possibile accedere ai parametri passati attraverso la riga di comando in file batch con la notazione %1
to %9
. Esistono anche altri due token che è possibile utilizzare:
%0
è il nome eseguibile (file batch) come specificato nella riga di comando .
%*
sono tutti i parametri specificati nella riga di comando - questo è molto utile se si desidera inoltrare i parametri a un altro programma.
Ci sono anche molte tecniche importanti da conoscere oltre a come accedere ai parametri.
Verifica se un parametro è stato passato
Questo viene fatto con costrutti come IF "%~1"==""
, il che è vero se e solo se non sono stati passati argomenti. Nota il carattere tilde che provoca la rimozione di eventuali virgolette circostanti dal valore di %1
; senza una tilde otterrai risultati imprevisti se quel valore include virgolette doppie, inclusa la possibilità di errori di sintassi.
Gestire più di 9 argomenti (o semplicemente semplificare la vita)
Se è necessario accedere a più di 9 argomenti, è necessario utilizzare il comando SHIFT
. Questo comando sposta i valori di tutti gli argomenti di una posizione, in modo che %0
prenda il valore di %1
, %1
prenda il valore di %2
, ecc. %9
Assume il valore del decimo argomento (se presente), che non era disponibile attraverso nessuna variabile prima di chiamare SHIFT
(invio comando SHIFT /?
per ulteriori opzioni).
SHIFT
è utile anche quando si desidera elaborare facilmente i parametri senza richiedere che siano presentati in un ordine specifico. Ad esempio, uno script può riconoscere le bandiere -a
e -b
in qualsiasi ordine. Un buon modo per analizzare la riga di comando in questi casi è
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Questo schema consente di analizzare righe di comando piuttosto complesse senza impazzire.
Sostituzione dei parametri batch
Per i parametri che rappresentano i nomi dei file, la shell offre molte funzionalità relative all'utilizzo di file che non sono accessibili in nessun altro modo. Questa funzionalità è accessibile con costrutti che iniziano con %~
.
Ad esempio, per ottenere la dimensione del file passato come argomento utilizzare
ECHO %~z1
Per ottenere il percorso della directory da cui è stato avviato il file batch (molto utile!) È possibile utilizzare
ECHO %~dp0
È possibile visualizzare l'intera gamma di queste funzionalità digitando CALL /?
il prompt dei comandi.