我尝试了不同的变体(如setlocal EnableDelayedExpansion) - 但没有任何作用:
echo off
IF "%1"=="Debug^|Win32" set servicesConfig=Win2008.Debug
echo Incorrect parametr %servicesConfig%
pause > nul
答案 0 :(得分:1)
当引号转义特殊字符时,您将%1
的内容与Debug^|Win32
(包括插入符号)进行比较。
在你的情况下你应该使用这个
@echo off
IF "%~1"=="Debug|Win32" (
echo It's ok
set servicesConfig=Win2008.Debug
) ELSE (
echo Unknown in "%~1"
)
您可以使用
进行调用test.bat "Debug|Win32"
or
test.bat Debug^|Win32
"%~1"
会将第一个参数括在引号中,因此特殊的字符是无害的,但如果第一个参数已经被引用,%~
会在添加新引号之前删除它们,所以你总是得到只有一个封闭。
答案 1 :(得分:1)
如果您拨打以下电话:script.bat "Debug|Win32"
这有效:
@echo off&setlocal IF "%~1"=="Debug|Win32" set "servicesConfig=Win2008.Debug" echo Incorrect parametr %servicesConfig%
输出是:
Incorrect parametr Win2008.Debug