A :
Kolon hat eine besondere Bedeutung in CMD
Umgebungsvariablen Wenn die Befehlserweiterungen aktiviert sind (Windows cmd
Standard), zum Beispiel
Schwer zu escape ein :
Kolon in Variablennamen, wenn möglich bei allen. Hier ist ein Workaround: Erstellen Sie Variablen mit solchen Namen, dass :
Doppelpunkt durch ein anderes Zeichen, z. _
niedriger Linie (Unterstrich):
@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
rem create sample variables
set "env:dev1=some thing!" value contains exclamation mark
set "env:dev2=some thing%%" value contains percent sign
set "an:other=some:thing3" another name containing colon
echo --- before ---
set env
set an
for /F "tokens=1* delims==" %%G in ('set') do (
set "auxName=%%G"
set "auxValue=%%H"
call :colons
)
echo --- after ---
set env
set an
rem
ENDLOCAL
goto :eof
:colons
if not "%auxName::=_%" == "%auxName%" set "%auxName::=_%=%auxValue%"
goto :eof
Ausgang:
==> d:\bat\so\37973141.bat
--- before ---
env:dev1=some thing!
env:dev2=some thing%
an:other=some:thing3
--- after ---
env:dev1=some thing!
env:dev2=some thing%
env_dev1=some thing!
env_dev2=some thing%
an:other=some:thing3
an_other=some:thing3
==>
bearbeiten: aus Gründen der Vollständigkeit halber:
@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
rem create sample variables
set "env:dev1=some thing!" value contains exclamation mark
set "env:dev2=some thing%%" value contains percent sign
set "an:other=some:thing3" another name containing colon
rem use sample variables
SETLOCAL DisableExtensions
echo Disabled Extensions %env:dev1%/%env:dev2%/%an:other%
ENDLOCAL
Beachten Sie Befehlserweiterungen des Sperrens Auswirkungen, lesen Sie cmd /?
:
Die Befehlserweiterungen Änderungen und/oder Ergänzungen zu den folgenden Befehlen beinhalten:
DEL or ERASE
COLOR
CD or CHDIR
MD or MKDIR
PROMPT
PUSHD
POPD
SET
SETLOCAL
ENDLOCAL
IF
FOR
CALL
SHIFT
GOTO
START (also includes changes to external command invocation)
ASSOC
FTYPE
spezifische Details zu erhalten, geben Sie befehl /? um die Besonderheiten zu sehen.
Vielen Dank! Oh Mann, wie kann man ':' in einen variablen Namen ... was für ein Chaos. – Matthias
blutige Fenster - zu hart, um Batch-Skripte zu programmieren – Starfish