ich diese Batchdatei haben eine Umgebungsvariable anhängen, wenn nicht vorhandenWindows-Check-String enthält nicht eine andere Arbeits
setLocal EnableDelayedExpansion
set echo off
set envPath=%PATH%
set comPath=";D:\Package\Libraries\Lib"
if x%envPath:comPath=%==x%envPath% (
setx PATH "%PATH%;D:\Package\Libraries\Lib" /M
)
pause
Aber es funktioniert nicht und sagt Datei diesmal unerwartet war
ich auf Batch file: Find if substring is in string (not in a file) basierend schrieb
Sie benötigen 'if '! EnvPath:% comPath% =!" == "! EnvPath!" '... Ihr Formular testet, ob die literale Zeichenfolge' comPath' vorhanden ist; Sie möchten sehen, ob der _contents_ von 'comPath' vorhanden ist. Dazu müssen Sie sowohl '%' als auch '!' Referenzen verwenden. – TripeHound
@Billa, Sie haben einen Beispielcode genommen, der nicht verwendet werden sollte. Siehe auch answers unter [Warum werden auch andere Ordnerpfade zum System PATH mit SetX hinzugefügt und nicht nur der angegebene Ordnerpfad?] (Http://stackoverflow.com/questions/25915767) und [Einstellung der Pfadumgebungsvariablen in der Batch-Datei nur einmal aktiviert Win7] (http://stackoverflow.com/questions/31885906) und [Wie kann ich eine .bat-Datei verwenden, um bestimmte Token aus der PATH-Umgebungsvariablen zu entfernen?] (Http://stackoverflow.com/a/38664286/3074564) für bessere Lösungen und eine Erklärung, warum nicht lokale __PATH__ auf dem Update-System __PATH__ verwenden. – Mofi
Das Erkennen, ob ein Wert in PATH vorhanden ist, ist viel komplizierter als Sie feststellen. Werfen Sie einen Blick auf [Wie kann ich überprüfen, ob das Verzeichnis in% PATH% existiert?] (Http://Stackoverflow.com/a/8046515/1012053) – dbenham