II°parte
codice:
Nella tabella seguente vengono descritte le combinazioni di modificatori che è possibile utilizzare per ottenere risultati composti.
Variabile con modificatori abbinati Descrizione
%~dpI Espande %I solo in una lettera di unità e in un percorso.
%~nxI Espande %I solo in un nome di file e una estensione.
%~fsI Espande %I solo in un percorso completo con nomi di file brevi.
%~dp$PATH:I Esegue una ricerca nelle directory elencate nella variabile di ambiente PATH per %I e lo espande nella lettera di unità e nel percorso della prima directory individuata.
%~ftzaI Espande %I in una riga di output simile a dir.
Negli esempi sopra descritti %I e PATH possono essere sostituiti con altri valori validi. Un nome di variabile valido per for termina la sintassi %~.
L'utilizzo di nomi di variabili espressi con lettere maiuscole come %I può conferire maggiore leggibilità alle istruzioni ed evitare la confusione con i modificatori, che non fanno distinzione tra maiuscole e minuscole.
Analisi di una stringa
È anche possibile utilizzare la logica for /F, trasformando il grupponomifile racchiuso tra parentesi in una stringa utilizzando le virgolette semplici, ovvero 'grupponomifile'. Grupponomifile viene considerato come un'unica riga di input di un file, e viene quindi analizzato.
Output dell'analisi
È possibile utilizzare il comando for /F per analizzare l'output di un comando trasformando il grupponomifile racchiuso tra parentesi in una stringa racchiusa tra virgolette inverse. La stringa viene considerata come una riga di comando, passata a un Cmd.exe figlio e l'output sarà acquisito in memoria e analizzato come se si trattasse di un file.
Esempi
Per utilizzare il comando for in un file batch, utilizzare la sintassi seguente:
for %%variabile in (gruppo) do comando [OpzioniRigaComando]
Per visualizzare il contenuto di tutti i file nella directory corrente con estensione doc o txt utilizzando la variabile sostituibile %f, digitare:
for %f in (*.doc *.txt) do type %f
In questo esempio ogni file nella directory corrente con estensione doc o txt verrà sostituito con la variabile %f fino a quando non sarà visualizzato il contenuto di tutti i file. Per utilizzare questo comando in un file batch, sostituire tutte le occorrenze di %f con %%f. In caso contrario, la variabile sarà ignorata e verrà visualizzato un messaggio di errore.
Per analizzare un file ignorando le righe di commento, digitare:
for /F "eol=; tokens=2,3* delims=," %i in (miofile.txt) do @echo %i %j %k
Questo comando eseguirà l'analisi di ogni riga contenuta nel file Miofile.txt ignorando le righe che iniziano con un punto e virgola, passando il secondo e il terzo token di ogni riga al comando FOR. I token sono delimitati da virgole o spazi. L'istruzione FOR indica a %i di individuare il secondo token, a %j di individuare il terzo token e a %k di individuare i token restanti. Se i nomi di file indicati contengono spazi, racchiudere il testo fra virgolette, ad esempio "Nome File". Per utilizzare le virgolette, è necessario utilizzare la parola chiave usebackq. In caso contrario, le virgolette vengono interpretate come se definissero una stringa di testo da analizzare.
La variabile %i è dichiarata in modo esplicito nell'istruzione FOR, mentre %j e %k sono dichiarate in modo implicito tramite la stringa tokens=. È possibile specificare fino a 26 token nella stringa tokens=, a condizione che non si tenti di dichiarare una variabile superiore alla lettera 'z' o 'Z'.
Per analizzare l'output di un comando racchiudendo tra parentesi il grupponomifile, digitare:
for /F "usebackq delims==" %i IN (`set`) DO @echo %i
Questo esempio enumera i nomi delle variabili nell'ambiente corrente.
Significati della formattazione
Formato Significato
Corsivo Informazioni che devono essere specificate dall'utente
Grassetto Elementi che l'utente deve digitare esattamente come indicato
Puntini (...) Parametro che è possibile ripetere più volte in una riga di comando
Parentesi quadre ([]) Elementi facoltativi
Parentesi graffe ({}); varie scelte separate da una barra verticale (|). Esempio: {pari|dispari} Opzioni alternative delle quali l'utente deve sceglierne una sola
Tipo di carattere Courier Codice oppure output di programmi
preso dall'help on line di windows [Desktop\F1]
oppure, dal prompt digita: FOR /?
p.s. non penso che WHILE sia un comando batch???