Batch file 检查动态变量是否为空-批处理
我想检查动态变量是否为空。我有变量f1-f9,现在我想检查如下:Batch file 检查动态变量是否为空-批处理,batch-file,variables,Batch File,Variables,我想检查动态变量是否为空。我有变量f1-f9,现在我想检查如下: IF f%ERRORLEVEL%=" " //do something set "f1= " set "f2= " ... 但这不起作用。我还尝试: IF !f%ERRORLEVEL%! 但这也不行 编辑: 变量f1-f9的创建方式如下: IF f%ERRORLEVEL%=" " //do something set "f1= " set "f2= " ... %ERRORLEVEL%包含一个介于1-9之间的数字(来自一
IF f%ERRORLEVEL%=" " //do something
set "f1= "
set "f2= "
...
但这不起作用。我还尝试:
IF !f%ERRORLEVEL%!
但这也不行
编辑:
变量f1-f9
的创建方式如下:
IF f%ERRORLEVEL%=" " //do something
set "f1= "
set "f2= "
...
%ERRORLEVEL%
包含一个介于1-9之间的数字(来自一个选择命令)您正在尝试将f1的值与
匹配,因此只需在%f1%周围添加双引号即可解决此问题。参见示例:
IF %ERRORLEVEL%==1 (
IF "%f1%"==" " (
set "f1=%turn%"
) ELSE (
goto draw_screen
)
但根据您对脚本的提问,您首先需要延迟扩展
,然后进行一些严格的测试:
@echo off
setlocal enabledelayedexpansion
set "f1= "
set "f2= "
set "f3= "
set "errorlevel=2"
if "!f%errorlevel%!"==" " (
set "f%errorlevel%=%turn%"
) else (
goto draw_screen
)
我使用f1-3只是为了简化答案,并明显地模仿
errorlevel
作为测试。这是一个单独的if语句,它将匹配任何errorlevel,您可以通过更改上面的errorlevel值来测试它。我不知道“动态变量”对您意味着什么,但在设置/?
帮助屏幕中,“动态变量”是%time%
,%date%
,%random%
等,无需用户直接操作即可更改其值的变量(因此它们是动态的,不是静态的)如果定义为f%ErrorLevel%echo f%ErrorLevel%
或setlocal EnableDelayedExpansion
,然后如果“!f%ErrorLevel%!”===”…