我正在使用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%"== ""
不起作用?如何查看是否设置了变量?
答案 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
答案 1 :(得分:12)
最简单的方法是使用命令行扩展名DEFINED。这也是我这样做的首选方式。
在你的情况下:
@echo off
set calltwo=%1
echo %calltwo%
if defined calltwo (
echo Error
)else (
call beingcalled.bat randomnumber
)
如果这对您不起作用,请在下面的链接中找到解决方法。
的副本答案 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