Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 检查动态变量是否为空-批处理_Batch File_Variables - Fatal编程技术网

Batch file 检查动态变量是否为空-批处理

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之间的数字(来自一

我想检查动态变量是否为空。我有变量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之间的数字(来自一个选择命令)

您正在尝试将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%!”===”…