批处理文件检查是否定义了变量及其值

时间:2016-07-18 07:19:58

标签: batch-file cmd

if /*some condition*/ set myvar=1


if defined myvar (
  if %myvar% equ 1 (
    echo Hurray
  )
)

但是,我收到错误1 was not expected at this time。使用echo,它会打印发生错误的if equ 1 (。请告知如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

我已将/*some condition*/替换为1==1

@echo off
if 1==1 set myvar=1
if defined myvar (
  if %myvar% equ 1 (
    echo Hurray
  )
)

这完美无缺。所以错误必须在你的条件内。我想aschipfl对失踪的delayed expansion是正确的。试试这个:

@echo off
setlocal enabledelayedexpansion
if /*some condition*/ set myvar=1
if defined myvar (
  if !myvar! equ 1 (
    echo Hurray
  )
)

添加enabledelayedexpansion并使用!...!代替%...%包围您的变量。