我试图创建一个程序,如果定义了变量 problem ,请添加一个。如果没有,请创建它并返回到开头。然而,当我运行它时,我得到的只是一个零列表。这是为什么?
@echo off
setlocal enabledelayedexpansion
:start
if exist problem (set /a problem=%problem%+1) else (set problem=0)
echo %problem%
goto start
答案 0 :(得分:1)
我正在使用if exist
,用于测试目录或文件是否存在。在这种情况下,使用变量时应该使用的是if defined
。
答案 1 :(得分:0)
您的计划有几个细节:
enabledelayedexpansion
部分不是必需的,因为您的程序不使用!变量!延迟扩张。set /a
命令不需要扩展变量值,因此set /a problem=problem+1
就足够了;但是,更简单的方法是:set /a problem+=1
。set /a
命令尝试操作未定义的变量时,它会自动创建零值。这意味着不需要整个if defined ...
命令。这样,你的程序可以简单:
@echo off
setlocal
:start
set /a problem+=1
echo %problem%
goto start