Cosa significa il segno di percentuale (% e %%) in un argomento del file batch?


11

Penso che mi manchi qualcosa perché non riesco a trovare cosa significhi.

Esempio:

for /D %%A in (*) do "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

Quella riga avrebbe dovuto usare una versione della riga di comando 7zipper comprimere le singole cartelle, ma sono sconcertato su cosa %%Asignifichi in questo contesto.



1
La riga di comando e il file del bagno sono confusi. Modificato il segno in alto.
Jim Kieger

Risposte:


12

Il forcomando ha bisogno di un segnaposto in modo da poter passare le variabili per utilizzarlo più avanti nella query, stiamo dicendo che usa il segnaposto %A, la ragione per cui il codice che hai visto %%Aè perché all'interno di un file batch (che presumo sia dove l'hai trovato) il %ha un significato speciale, quindi è necessario farlo due volte in %%modo che venga convertito in un singolo %per essere passato al forcomando

Per interrompere effettivamente ciò che sta facendo il comando, ci sono due parti nel comando:

 for /D %%A in (*) do .....

Quello che dice questa parte è per ogni cartella nella cartella corrente eseguire il comando seguente sostituendo %%Acon il nome della cartella attualmente in elaborazione.

..... "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

Ciò che dice questa parte è eseguire il comando "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"e sostituire i due %%Acon il record corrente che stiamo elaborando.


Solo per nitpick - il / D sul ciclo for limiterà il carattere jolly * alle directory, non "tutti i file in questa cartella e ogni sottocartella" (supponendo che le estensioni di comando siano abilitate).
Ernie,

@ernie hai ragione, stavo guardando l'opzione / R nella pagina di aiuto, ho corretto la mia risposta.
Scott Chamberlain,

Grazie per questo, mostra quanto sembra noobish, ma è roba piuttosto arcaica che devo esaminare un paio di manuali online per.
Jim Kieger,

0

È una variabile

Quel particolare esempio usa l' opzione di directory di un ciclo FOR , scorrendo le directory e assegnandole a %% A.

Anche questo non è un esempio da riga di comando, ma un esempio di file batch. Nei file batch, è necessario utilizzare %% A, mentre nella riga di comando, si dovrebbe semplicemente usare% A.


0

Nel tuo scenario, %% A è un segnaposto per ciò che il ciclo "for" sta ripetendo (che la / D indica le directory). Quindi ogni iterazione del ciclo, %% A è una delle directory.

Vedrai %% anziché% nel codice batch. Vedrai% anziché %% utilizzato nel prompt dei comandi.

Quindi sappi che se copi un codice di file batch in un prompt dei comandi ed eseguilo con %% in uso, si verificherà un errore e viceversa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.