Batch Anführungsstriche von Parametern/Variablen entfernen
Nachdem ich immer wieder darüber falle dass Argumente und Variablen mit einem Leerzeichen bei einer Batch automatisch mit " versehen werden, habe ich mir angewöhnt die Argumente in Variablen abzulegen und die Anführungsstriche zu entfernen.
Bei Parametern geht das ganz einfach
SET ARG1=%~1
Bei Variablen wendet man einen kleinen Trick an um den ersten und den letzten " zu entfernen.
Man verwendet einen Marker, in diesem Fall ____, welcher in der Variable "definitiv" nicht vorkommt, und entfernt dann die " samt Marker, durch einen replace, ohne andere Quotes innerhalb der Variable zu verändern.
SET VAR=____%VAR%____
SET VAR=%VAR:"____=%
SET VAR=%VAR:____"=%
Beispiel
Hier mal ein kleine Beispiel wie mit den Variablen gearbeitet werden kann.
@echo off
SET ARG1=%~1
SET ARG2=%~2
SET VAR="Hallo "du" da"
SET VAR=____%VAR%____
SET VAR=%VAR:"____=%
SET VAR=%VAR:____"=%
echo %VAR%
echo %ARG1%
echo %ARG2%
Ausgeführt in einer Batch (Test.bat) erhält man folgenden Output.
PS ...> .\Test.bat "Var 1" Var2
Hallo "du" da
Var 1
Var2