Comment appeler un sous-programme dont le paramètre est une variable contenant une esperluette (& amp;)?
Il n'y a pas d'erreur, mais l'appel ne semble jamais s'exécuter.
exemple.bat
@echo off
setlocal enableDelayedExpansion
rem Doesn't work
set val=with^&ersand
call :Output !val!
rem Works fine
set val=without_ampersand
call :Output !val!
goto End
:Output
set "line=%1"
echo Called: !line!
goto :eof
End:
Sortie:
Appelé: without_ampersand
Modifier:
L'utilisation de Expansion retardée n'est pas requis. C'était juste utilisé dans cet exemple. Une façon de le faire sans utiliser delayExpansion est préférable.
La question se concentre sur "Comment appeler" plutôt que "Comment définir initialement la variable". La variable peut provenir d'une entrée utilisateur ou d'un for /f
boucle (comme c'est mon cas).
^
. Mais cela ne transmettra pas la valeur au sous-programme.
set val=with^^^&ersand
donc beaucoup plus échapper.