Für eine CMD
Sitzung kann ich leicht einen neuen Pfad festlegen:SET PATH=%PATH%;"insert custom path here"
Wenn Sie dies in einer Batchdatei tun, wird nicht berücksichtigt, ob der benutzerdefinierte Pfad bereits enthalten ist. Wie vermeide ich das Duplizieren (dh überprüfe, ob es bereits in der PATH "Zeichenfolge" enthalten ist).
Bemerkungen:
- Verwandte Themen: Wie füge ich benutzerdefinierte Umgebungsvariablen an die Systemvariable PATH in Windows 7 an?
- Verwandte Themen: Wie kann ich einen Eintrag in die PATH-Variable des Systems dauerhaft über die Befehlszeile anhängen?
- Gleiche Frage für UNIX: Verzeichnis zu $ PATH hinzufügen, falls es noch nicht vorhanden ist
- Einige "CMD" -Stringoperationen wurden erklärt: http://ss64.com/nt/syntax-replace.html
windows
command-line
path
Horst Walter
quelle
quelle
Antworten:
Ähnlich wie bei MaddHackers Antwort, nur kompakter.
echo %path%|find /i "%np%">nul || set path=%path%;%np%
%np%
ist Ihr neuer Weg, natürlich können Sie stattdessen Literale verwenden. Was es macht:echo %path%|find /i "%np%">nul
Durchsucht den vorhandenen Pfad nach einer Zeichenfolge und verwirft die Ausgabe.||
bedeutet Ausführung bei Fehler, also: Suchpfad für die hinzuzufügende Zeichenfolge, und falls nicht gefunden, fügen Sie sie hinzu.Bearbeiten: Im Allgemeinen ist es nicht erforderlich, Pfade in Anführungszeichen zu setzen, auch nicht solche, die Leerzeichen enthalten Wenn Sie sie jedoch in Anführungszeichen setzen möchten, funktioniert diese Version mit Pfaden in doppelten Anführungszeichen:
echo %path%|find /i "%np:"=%">nul || set path=%path%;%np%
Bearbeiten: geändert
findstr /i /c:
infind /i
alsfindstr
können einige Sequenzen falsch interpretieren , wie durch KubaOber in den Kommentaren darauf hingewiesen ,quelle
%np%
Anführungszeichen enthalten - ja, führt dies zu einem Fehlverhalten.echo %path%|findstr /i /c:"my path">nul || set path=%path%;"my path"
) sollte einwandfrei funktionieren.echo d\. | findstr /c:"d\."
schlägt fehl, aberecho d\. | find "d\."
erfolgreichIch weiß, dass es schmutzig ist, aber das sollte funktionieren:
wo
%checkstr%
ist die Zeichenfolge, nach der im PATH gesucht werden soll, und wo%newpath%
ist der neue PATH, der an den aktuellen PATH angehängt werden soll?Ich hoffe, das hilft, und ich bin sicher, es gibt einen einfacheren Weg, aber das sollte den Trick für den Moment tun.
BEARBEITEN
Wenn Sie die UNIX-Tools nicht zu Windows hinzufügen möchten, können Sie diese Stapelsyntax ausprobieren:
Ugh, nicht hübscher, und kann als eine Zeile ausgeführt werden, wenn Sie den Befehl pipe'ed find als Unterbefehl in der if-Anweisung verwenden können ...
quelle
Skript basierend auf der Antwort von "wmz":
quelle