检查变量是否有值时执行批处理文件中断

时间:2015-03-24 12:00:19

标签: batch-file

如果文件已加载或不加载,我使用以下命令加载其内容:

set /p filevar=file.txt

并检查var是否为空:

if "%filevar%"="" exit

当脚本chceks文件有多行时,脚本的执行停止,所以我认为chcecking失败。为什么脚本失败?如何进行这样的检查?

1 个答案:

答案 0 :(得分:2)

首先,您已经弄清了set /p命令的语法。实际上,它会提示用户输入文本" file.txt"。我想你的意思是

set /p "filevar=" <file.txt

如果脚本是从命令行运行的,那么您还应该使用/b开关和exit来阻止控制台窗口关闭。

但是,正如杰布所说,要检查左边是否正确,请使用==equ。或者,正如dbenham提醒我的那样,如果您要检查空值,也可以使用if not defined

if "%filevar%"=="" exit /b
if "%filevar%" equ "" exit /b
if not defined filevar exit /b

所有三个陈述都具有相同的结果 1

在控制台窗口中,输入help if以获取更多信息。


1 值得一提的是,虽然这三个if语句在括号内的代码块之外具有相同的结果,但只有第三个语句在括号内可靠地工作(例如在for循环中)。如果在%filevar%设置的同一代码块中使用,前两个需要延迟扩展才能正常工作。