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

Penso che mi manchi qualcosa perché non riesco a trovare ciò che significa.

Esempio: per / D %% A in (*) fare "\ 7za.exe" u -t7z -m9 = LZMA2 "%% A.7z" "%% A"

Quella linea whereva utilizzare una versione di row di command di 7zip per comprimere le singole cartelle, ma sono stompato per quello che significa %% A in questo context.

Il command for command richiede un segnaposto in modo da poter passare le variables per essere utilizzate più tardi nella query, stiamo dicendo che utilizzi il segnaposto %A , il motivo per cui il codice che hai visto usa %%A è perché all'interno di un file batch (che suppongo where hai trovato questo) il % ha un significato speciale, quindi devi farlo due volte %% modo che venga trasformato in un unico % da passare al command for

Per effettivamente spezzare ciò che il command sta facendo, ci sono due parti al command:

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

Ciò che questa parte dice è per each cartella della cartella corrente eseguire il seguente command che sostituisce %%A con il nome della cartella attualmente in fase di elaborazione.

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

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

È una variabile.

Quell'esempio particolare utilizza l' opzione di directory di un ciclo FOR , iterando attraverso le directory e assegnandole a %% A.

Anche questo non è un esempio di row di command, ma un esempio di file batch. Nei file batch, è necessario utilizzare %% A mentre nella row di command si utilizza% A.

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

Vedrai %% invece di% nel codice batch. Vedrai% al posto di %% utilizzato nel prompt dei comandi.

Quindi sappiate che se si copia un codice di file batch in un prompt dei comandi e lo esegue con %% usando, si verificherà errori e viceversa.