Как проверить, существует ли переменная в пакетном файле?
Я использую команду call
:
call beingcalled.bat randomnumber
В becalled.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%"== ""
не работает? И как я вижу, была ли установлена переменная?
Ответы
Ответ 1
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
Ответ 2
Самый простой способ - просто использовать расширение командной строки DEFINED. Это также мой предпочтительный способ сделать это.
в твоем случае:
@echo off
set calltwo=%1
echo %calltwo%
if defined calltwo (
echo Error
)else (
call beingcalled.bat randomnumber
)
Если это не сработает для вас, в приведенной ниже ссылке есть обходной путь.
Вопрос также является дубликатом: Проверьте, не определена ли переменная среды без расширений команд и без использования командного файла?
Ответ 3
Это просто продолжение комментария (и щедрости) от @Rishav
Heres трюк, который я взял очень давно:
@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