=str13 在这个时候是意外的批处理文件
=str13 was unexpected at this time batch file
我只是无法让它工作。
我使用另一种解决方案来确定接收到的参数是否包含某个子字符串。但是每当我不输入第三个参数时它就会失败。我尝试了 4/5 方法来检查它是否存在并在变量内设置搜索条件,但它似乎不起作用!
set str1=%3
if not "%~3"=="" (
if not x%str1:TEST=%==x%str1% SET additional_config=UNIT_TEST SKIP_WAIT %3
)
如果 %3 不存在,我如何避免计算它以避免错误?
如果 'TEST' 是接收到的第三个参数的一部分,代码应该简单地设置 additional_config。 (如果有第三个参数)
你的问题是if not x%str1:TEST=%
甚至if not "%str1:TEST=%"
的解析。
这部分被解析了,即使%3
为空,问题也来了。
str1
在这种情况下是空的。 empty/undefined 变量的 search/replace 的百分比扩展有意外结果。
在您的情况下,解析器在 %str1:
阶段检测到 str1
未定义并停止百分比扩展。
因此,解析器看到
TEST=%==x%str1% SET additional_config=UNIT_TEST SKIP_WAIT %3
并在成对的百分号处拆分它:
TEST= %==x% str1 % SET additional_config=UNIT_TEST SKIP_WAIT % 3
百分号部分无效或未定义变量
TEST= ... str1 ... 3
此时程序因语法错误而停止,因为块(括号内)包含无效的 IF
语句
如何解决?
一种方法是存储之前的值
set "str1=%~3"
set "contains=%str1:TEST=%"
if not "%~3"=="" (
if not "%contains%" == "%str1%" SET additional_config=UNIT_TEST SKIP_WAIT %3
)
或者更好的是,使用延迟扩展,这样不会失败
@echo off
setlocal EnableDelayedExpansion
set "str1=%~3"
if not "%~3"=="" (
if not "!str1:TEST=!" == "!str1!" SET additional_config=UNIT_TEST SKIP_WAIT %3
)
我只是无法让它工作。 我使用另一种解决方案来确定接收到的参数是否包含某个子字符串。但是每当我不输入第三个参数时它就会失败。我尝试了 4/5 方法来检查它是否存在并在变量内设置搜索条件,但它似乎不起作用!
set str1=%3
if not "%~3"=="" (
if not x%str1:TEST=%==x%str1% SET additional_config=UNIT_TEST SKIP_WAIT %3
)
如果 %3 不存在,我如何避免计算它以避免错误?
如果 'TEST' 是接收到的第三个参数的一部分,代码应该简单地设置 additional_config。 (如果有第三个参数)
你的问题是if not x%str1:TEST=%
甚至if not "%str1:TEST=%"
的解析。
这部分被解析了,即使%3
为空,问题也来了。
str1
在这种情况下是空的。 empty/undefined 变量的 search/replace 的百分比扩展有意外结果。
在您的情况下,解析器在 %str1:
阶段检测到 str1
未定义并停止百分比扩展。
因此,解析器看到
TEST=%==x%str1% SET additional_config=UNIT_TEST SKIP_WAIT %3并在成对的百分号处拆分它:
TEST= %==x% str1 % SET additional_config=UNIT_TEST SKIP_WAIT % 3
百分号部分无效或未定义变量
TEST= ... str1 ... 3
此时程序因语法错误而停止,因为块(括号内)包含无效的 IF
语句
如何解决?
一种方法是存储之前的值
set "str1=%~3"
set "contains=%str1:TEST=%"
if not "%~3"=="" (
if not "%contains%" == "%str1%" SET additional_config=UNIT_TEST SKIP_WAIT %3
)
或者更好的是,使用延迟扩展,这样不会失败
@echo off
setlocal EnableDelayedExpansion
set "str1=%~3"
if not "%~3"=="" (
if not "!str1:TEST=!" == "!str1!" SET additional_config=UNIT_TEST SKIP_WAIT %3
)