it-swarm.com.ru

Как проверить, существует ли переменная в командном файле?

Я использую команду call:

call beingcalled.bat randomnumber

In 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%"== "" не работает? И как мне узнать, была ли установлена ​​переменная?

17
Fivos Capone
IF "%Variable%"=="" ECHO Variable is NOT defined

Это должно помочь, но это работает, при условии, что значение переменной не содержит двойных кавычек .... Или вы можете попробовать. Оба работали на меня.

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

26
Rishav

Самый простой способ - просто использовать расширение командной строки DEFINED. Это также мой предпочтительный способ сделать это.

в твоем случае:

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

Если это не работает для вас, есть обходной путь по ссылке ниже.

Вопрос также является дубликатом: Проверить, определена ли переменная среды без расширений команд и без использования командного файла?

10
K4dse

Это просто продолжение комментария (и награды) от @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

2
Philip Kelley