如何检查批处理文件中是否存在变量?

时间:2016-05-06 11:34:02

标签: windows batch-file cmd

我正在使用call命令:

call beingcalled.bat randomnumber

beingcalled.bat

@echo off
set call=%1
echo %call%
set call=%call%%call%
call caller.bat %call%`

caller.bat

@echo off
set calltwo=%1
echo %calltwo%
if "%calltwo%"== "" (
    echo Error
) else (
    call beingcalled.bat randomnumber
)

为什么命令if "%calltwo%"== ""不起作用?如何查看是否设置了变量?

3 个答案:

答案 0 :(得分:27)

IF "%Variable%"=="" ECHO Variable is NOT defined

如果Variable的值不包含双引号,这应该会有所帮助。 或者你可以试试。两者都适合我。

VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 ECHO Unable to enable extensions
IF DEFINED MyVar (ECHO MyVar IS defined) ELSE (ECHO MyVar is NOT defined)
ENDLOCAL
  

来源http://www.robvanderwoude.com/battech_defined.php

答案 1 :(得分:12)

最简单的方法是使用命令行扩展名DEFINED。这也是我这样做的首选方式。

在你的情况下:

@echo off
set calltwo=%1
echo %calltwo%
if defined calltwo (
echo Error
)else (
call beingcalled.bat randomnumber
)

如果这对您不起作用,请在下面的链接中找到解决方法。

问题也是:Check if an environment variable is defined without command extensions and without using a batch file?

的副本

答案 2 :(得分:2)

这只是@Rishav评论(和赏金)帖子的后续行动

这是我很久以前选择的一个技巧:

@ECHO OFF

SET Foo=%1

ECHO ==  Start  ====================

ECHO %Foo%

IF %Foo%x == x ECHO Parameter not set

ECHO ==  End  ====================
ECHO.

如果未设置参数,则会检查x==x

如果设置参数(例如,“asdf”),则会检查asdfx==x