Wenn eine Umgebungsvariable angegeben wird, die nicht zitiert werden kann, muss ich die Anführungszeichen entfernen.Batchdatei - Wie finde ich Anführungszeichen in einer Zeichenkette?
Zum Beispiel kann mir gegeben werden:
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144
JAVA_HOME="C:\Program Files\Java\jdk1.8.0_144"
Ich versuche findstr
zu verwenden und es scheint, von cmd.exe gut zu arbeiten, aber nicht von meinem Batch Datei. Das ist, was ich habe in test1.bat
:
@echo off
echo.%JAVA_HOME% | findstr \^" 1>nul
if ERRORLEVEL 0 (
echo Found Quotes
)
if ERRORLEVEL 1 (
echo No Quotes found
)
Das Problem, das ich habe ist, dass die ERRORLEVEL
immer 0
zu sein scheint, und ich bekomme immer die Meldung „Found Zitate“ wenn ich test1.bat
laufen.
Ich habe diesen Code zum Entfernen von Anführungszeichen for /f "delims=" %%G IN (%JAVA_HOME%) DO SET JAVA_HOME=%%G
die funktioniert finden, aber nur, wenn es Angebote gibt, daher müssen die oben genannten findstr
Bedingungen richtig funktionieren.
Drei Antworten bis jetzt und jeder behandelt einen anderen Aspekt. Das Hauptproblem mit Ihrem Code ist, dass Sie die [höchste Fehlerstufe zuerst] vergleichen müssen (https://ss64.com/nt/if.html). Sie könnten dies mit einer bedingten Ausführung vermeiden: echo:% AJVA_HOME% | findstr^"> nul 2> & 1 && (echo Zitate gefunden) || (echo no quotes found)' – LotPings