web-dev-qa-db-fra.com

Que signifie le signe de pourcentage (% et %%) dans un argument de fichier de traitement par lots?

Je pense que je manque quelque chose parce que je n'arrive pas à trouver ce que cela signifie.

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

Cette ligne était censée utiliser une version en ligne de commande de 7Zip pour compresser des dossiers individuels, mais je ne comprends pas ce que signifie %% A dans ce contexte.

11
Jim Kieger

La commande for nécessite un espace réservé afin que vous puissiez transmettre des variables à utiliser ultérieurement dans la requête. Nous lui disons d'utiliser l'espace réservé %A, le motif du code vous avez vu utiliser %%A parce que, dans un fichier de commandes (ce qui, je suppose, vous l'avez trouvé), le % a une signification spéciale, vous devez donc le faire deux fois %% pour qu'il soit transformé en un seul % à transmettre à la commande for

Pour réellement séparer ce que la commande est en train de faire, la commande comporte deux parties:

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

La présente partie s’applique à chaque dossier du dossier en cours et exécute la commande suivante en remplaçant %%A par le nom du dossier en cours de traitement.

..... "\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 par l'enregistrement en cours que nous traitons.

11

C'est une variable.

Cet exemple particulier utilise l'option de répertoire d'une boucle FOR , en effectuant une itération à travers les répertoires et en les affectant à %% A.

Ce n'est pas non plus un exemple de ligne de commande, mais un exemple de fichier de commandes. Dans les fichiers de commandes, vous devez utiliser %% A, alors que vous utiliseriez simplement% A en ligne de commande.

0
ernie

Dans votre scénario, %% A est un espace réservé pour ce sur quoi la boucle "pour" parcourt (ce 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.

Sachez donc que si vous copiez un code de fichier de commandes dans une invite de commande et que vous l'exécutez avec %% en cours d'utilisation, une erreur se produira, et vice versa.

0
Mechaflash