小编典典

测试批处理文件中参数是否为空的正确方法是什么?

all

我需要测试是否设置了变量。我尝试了几种技术,但只要%1被引号包围,例如 case when %1is ,它们似乎都会失败"c:\some path with spaces"

IF NOT %1 GOTO MyLabel // This is invalid syntax
IF "%1" == "" GOTO MyLabel // Works unless %1 has double quotes which fatally kills bat execution
IF %1 == GOTO MyLabel // Gives an unexpected GOTO error.

根据这个站点,这些是受支持的IF语法类型。所以,我看不出有什么办法。

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

更新:在 2020 年 10 月 25
日,我将接受的答案从使用括号更新为使用波浪号。每个人都说波浪号更好,因为它更安全。我有点伤心,因为波浪号看起来更复杂,而且不太清楚它的目的是什么,但尽管如此,我改变了它。


阅读 65

收藏
2022-05-10

共1个答案

小编典典

您可以使用:

IF "%~1" == "" GOTO MyLabel

剥离外部引号。一般来说,这是一种比使用方括号更可靠的方法,因为即使变量中有空格,它也会起作用。

2022-05-10