it-swarm.com.de

Wie kann ich überprüfen, ob eine Variable eine andere Variable in einer Windows-Batchdatei enthält?

Angenommen, die folgende Batch-Datei

set variable1=this is variable1
set variable2=is
set variable3=test

if variable1 contains variable2 (
    echo YES
) else (
    echo NO
)

if variable1 contains variable3 (
    echo YES
) else (
    echo NO
)

Ich möchte, dass die Ausgabe ein JA gefolgt von einem NEIN ist

12
Gary Brunton

Ich habe das mit folgendem gelöst

setLocal EnableDelayedExpansion

set variable1=this is variable1
set variable2=is
set variable3=test

if not "x!variable1:%variable2%=!"=="x%variable1%" (
    echo YES
) else (
    echo NO
)

if not "x!variable1:%variable3%=!"=="x%variable1%" (
    echo YES
) else (
    echo NO
)

endlocal

Ich habe die Grundidee aus der folgenden Antwort bekommen, aber es wurde nicht nach einer Variablen gesucht, also war es nicht genau das, wonach ich suchte.

Stapeldatei: Findet, ob der Teilstring in einer Zeichenfolge (nicht in einer Datei) enthalten ist

18
Gary Brunton

ein anderer Weg:

echo/%variable1%|find "%variable2%" >nul
if %errorlevel% == 0 (echo yes) else (echo no)

der / verhindert die Ausgabe von Echo is ON oder Echo is OFF, falls %variable1% leer ist.

5
Stephan

Gary Bruntons Antwort funktionierte nicht für mich.

Wenn Sie mit set variable1="C:\Users\My Name\" versuchen, erhalten Sie einen Fehler:

 'Name\""' is not recognized as an internal or external command

Anpassen dieser Antwort Finden Sie heraus, ob eine Umgebungsvariable einen Teilstring enthält , ich endete mit:

echo.%variable1%|findstr /C:"%variable2%" >nul 2>&1
if not errorlevel 1 (
   echo Found
) else (
   echo Not found
)
1
JBE