web-dev-qa-db-fra.com

Comment vérifier si une variable existe dans un fichier batch?

J'utilise la commande call:

call beingcalled.bat randomnumber

Dans Beingcalled.bat :

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

Dans caller.bat :

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

Pourquoi la commande if "%calltwo%"== "" ne fonctionne-t-elle pas? Et comment puis-je voir si une variable a été définie?

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

Cela devrait aider mais cela fonctionne, à condition que la valeur de Variable ne contienne pas de guillemets .. .. Ou vous pouvez essayer. Les deux ont travaillé pour moi.

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

source http://www.robvanderwoude.com/battech_defined.php

26
Rishav

Le moyen le plus simple consiste simplement à utiliser l'extension de ligne de commande DEFINED. C'est aussi ma façon préférée de le faire.

dans ton cas:

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

Si cela ne fonctionne pas pour vous, il existe une solution de contournement dans le lien ci-dessous.

La question est également une copie de: Vérifier si une variable d’environnement est définie sans extension de commande et sans utiliser de fichier de commandes?

10
K4dse

Ceci est juste un suivi du commentaire (et de la prime) posté par @Rishav

Voici un truc que j'ai découvert il y a très longtemps:

@ECHO OFF

SET Foo=%1

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

ECHO %Foo%

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

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

Si le paramètre n'est pas défini, vous obtenez une vérification de x==x

Si le paramètre est défini (sur, par exemple, “asdf”), vous obtenez une vérification de asdfx==x

2
Philip Kelley