Je suis sûr que vous êtes au courant que %1
, %2
, etc. à l'intérieur d'un .bat représentent les arguments numérotés passés au .bat sur la ligne de commande.
Si vous les utilisez comme %~1
, %~2
, etc. toutes les citations environnantes seront supprimées automatiquement, le cas échéant.
Considérez ceci space-in-args.bat
pour les tests:
@echo off
echo. %1
echo. (original first argument echo'd)
echo.
echo. "%1"
echo. (original first argument with additional surrounding quotes)
echo.
echo. %~1
echo. (use %%~1 instead of %%1 to remove surrounding quotes, should there be)
echo.
echo. "%~1"
echo. (we better use "%%~1" instead of "%%1" in this case:
echo. 1. ensure, that argument is quoted when used inside the batch;
echo. 2. avoid quote doubling should the user have already passed quotes.
echo.
Lancez-:
space-in-args.bat "a b c d e"
sortie est:
"a b c d e"
(original first argument echo'd)
""a b c d e""
(original first argument with additional surrounding quotes)
a b c d e
(using %~1 instead of %1 removes surrounding quotes, should there be some)
"a b c d e"
(we better use "%~1" instead of "%1" in this case:
1. ensure, that argument is quoted when used inside the batch;
2. avoid quote doubling should the user have already passed quotes.
Voir aussi for /?
(défiler vers le bas vers la fin) pour savoir à propos de certaines de ces conversions.
Vous ai remercié 2 personnes maintenant, ont-ils répondu à votre question? Si oui, acceptez la réponse. –