Fiv*_*one 23 windows cmd batch-file
我正在使用call
命令:
call beingcalled.bat randomnumber
Run Code Online (Sandbox Code Playgroud)
在becalled.bat:
@echo off
set call=%1
echo %call%
set call=%call%%call%
call caller.bat %call%`
Run Code Online (Sandbox Code Playgroud)
在caller.bat中:
@echo off
set calltwo=%1
echo %calltwo%
if "%calltwo%"== "" (
echo Error
) else (
call beingcalled.bat randomnumber
)
Run Code Online (Sandbox Code Playgroud)
为什么命令if "%calltwo%"== ""
不起作用?如何查看是否设置了变量?
Ris*_*hav 30
IF "%Variable%"=="" ECHO Variable is NOT defined
Run Code Online (Sandbox Code Playgroud)
如果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
Run Code Online (Sandbox Code Playgroud)
小智 19
最简单的方法是使用命令行扩展名DEFINED.这也是我这样做的首选方式.
在你的情况下:
@echo off
set calltwo=%1
echo %calltwo%
if defined calltwo (
echo Error
)else (
call beingcalled.bat randomnumber
)
Run Code Online (Sandbox Code Playgroud)
如果这对您不起作用,请在下面的链接中找到解决方法.
问题也是重复:检查是否定义了没有命令扩展且没有使用批处理文件的环境变量?
小智 6
这些解决方案在 Windows 10 上都不适合我,但我确实找到了一个可行的解决方案
IF %foo%==^%foo^% ECHO variable not defined
Run Code Online (Sandbox Code Playgroud)
这只是@Rishav 的评论(和赏金)帖子的后续内容
\n\n这里\xe2\x80\x99是我很久以前学会的一个技巧:
\n\n@ECHO OFF\n\nSET Foo=%1\n\nECHO == Start ====================\n\nECHO %Foo%\n\nIF %Foo%x == x ECHO Parameter not set\n\nECHO == End ====================\nECHO.\n
Run Code Online (Sandbox Code Playgroud)\n\n如果未设置该参数,则会检查x==x
如果设置了参数(例如,\xe2\x80\x9casdf\xe2\x80\x9d),你会得到一个检查asdfx==x
归档时间: |
|
查看次数: |
45278 次 |
最近记录: |