1

我尝试了不同的变体(如 setlocal EnableDelayedExpansion) - 但没有任何效果:

echo off
IF "%1"=="Debug^|Win32"  set servicesConfig=Win2008.Debug
echo Incorrect parametr %servicesConfig%
pause > nul
4

2 回答 2

1

当引号转义特殊字符时,您将比较%1with的内容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"一个参数括在引号中,因此特殊字符是无害的,但如果第一个参数已被引用,%~则将在添加新引号之前将它们剥离,因此您总是只得到一个包围。

于 2013-05-28T21:45:03.620 回答
1

如果您拨打以下电话:script.bat "Debug|Win32"这有效:

@echo off&setlocal
IF "%~1"=="Debug|Win32" 设置 "servicesConfig=Win2008.Debug"
echo 参数不正确 %servicesConfig%

输出是:

Incorrect parametr Win2008.Debug
于 2013-05-28T21:55:22.250 回答