Quel est le signe de pourcentage (% et %%) dans un argument de fichier par lots?

Je pense que je manque de quelque chose parce que je ne peux pas trouver ce que cela signifie.

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

Cette ligne était censée utiliser une version de ligne de commande de 7zip pour compresser des dossiers individuels, mais je suis perplexe quant à ce que %% A signifie dans ce contexte.

La commande for nécessite un espace réservé afin que vous puissiez transmettre les variables à utiliser plus tard dans la requête, nous vous demandons d'utiliser l'espace réservé %A , la raison pour laquelle le code que vous avez utilisé utilise %%A est que dans un fichier batch (ce que je suppose est Où vous avez trouvé cela), le % a une signification particulière, donc vous devez le faire deux fois %% afin qu'il soit transformé en un seul % à passer à la commande for

Pour répartir réellement ce que fait la commande, il y a deux parties à la commande:

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

Ce que cette partie dit est pour chaque dossier dans le dossier en cours, exécutez la commande suivante en remplaçant %%A par le nom du dossier de traitement en cours.

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

Ce que cette partie dit, c'est exécuter la commande "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A" et remplacer les deux %%A 's par l'enregistrement actuel que nous traitons.

C'est une variable.

Cet exemple particulier utilise l' option de répertoire d'une boucle FOR , itérant dans les répertoires et les affecte à %% A.

Ce n'est pas non plus un exemple de ligne de commande, mais un exemple de fichier par lots. Dans les fichiers par lots, vous devez utiliser %% A, alors que sur la ligne de commande, vous devriez utiliser% A.

Dans votre scénario, le %% A est un espace réservé pour ce que la boucle "for" iterating over (que le / D indique les répertoires). Ainsi, chaque itération de la boucle, %% A est l'un des répertoires.

Vous verrez %% au lieu de% dans le code de lot. Vous verrez% au lieu de %% utilisé dans votre invite de commande.

Donc, sachez que si vous copiez sur un code de fichier batch dans une invite de commande et exécutez-le avec %% étant utilisé, cela va se produire, et vice versa.