Eingabeaufforderung - Wie füge ich einen festgelegten Pfad nur für die ausgeführte Batchdatei hinzu?

186

Grundsätzlich weiß ich, dass ich über mein Control Panel die Pfadvariable ändern kann. Aber ich frage mich, ob es eine Möglichkeit gibt, durch Batch-Programmierung einen temporären Pfad einzuschließen. Auf diese Weise wird es nur während der Ausführung dieser Batchdatei verwendet. Ich möchte nicht, dass Leute ihre Pfadvariablen ändern, nur um meine Batchdatei zu verwenden.

Michael
quelle

Antworten:

317

Wie jede andere Umgebungsvariable mit SET:

SET PATH=%PATH%;c:\whatever\else

Wenn Sie zuerst eine kleine Sicherheitsüberprüfung durchführen lassen möchten, überprüfen Sie zunächst, ob der neue Pfad vorhanden ist:

IF EXIST c:\whatever\else SET PATH=%PATH%;c:\whatever\else

Wenn dies für diese Batchdatei lokal sein soll, verwenden Sie setlocal:

setlocal
set PATH=...
set OTHERTHING=...

@REM Rest of your script

Lesen Sie die Dokumente sorgfältig für setlocal/ endlocalund sehen Sie sich die anderen Referenzen auf dieser Site an. Funktionen sind ebenfalls sehr interessant und die Syntax ist schwierig.

Auf der Syntaxseite sollten Sie mit den Grundlagen beginnen.

Matte
quelle
3
Wenn Sie setlocalIhrer Batch-Datei ein hinzufügen , ist der Pfad nur in der Datei sichtbar
jeb
hw fügst du "setlocal" hinzu? Ist das anstelle von "SET"?
Michael
@micheal: hat meine Antwort mit Links aktualisiert. Bitte lesen Sie einige Dokumentationen / Beispiele / Tutorials zu Cmd-Skripten - SETdas sollten Sie unbedingt wissen und verstehen, bevor Sie Skripte erstellen.
Mat
2
Lebensretter. Ich musste einen EV auf einem Server hinzufügen, der nicht neu gestartet werden konnte, und dies ermöglicht mir, das zu tun, was ich brauche, ohne einen Neustart planen zu müssen!
dav_i
8
Auch ohne SETLOCALes wird höchstens für diese einzelne Eingabeaufforderungssitzung sein - wenn Sie dies von mehr als einer Batchdatei aus tun und verwenden EXIT /B %N%, werden SETLOCALIhre Änderungen im Grunde nur beim Beenden des Skripts gespeichert. : - /
BrainSlugs83
21

Es gibt ein wichtiges Detail:

set PATH="C:\linutils;C:\wingit\bin;%PATH%"

funktioniert nicht, während

set PATH=C:\linutils;C:\wingit\bin;%PATH%

funktioniert. Der Unterschied sind die Zitate!

UPD siehe auch den Kommentar von venimus

18446744073709551615
quelle
3
Tatsächlich sollten SET "PATH=...%PATH%"Leerzeichen im Pfad Fehler oder Fehlverhalten verursachen. Wenn Sie solche Anführungszeichen einschließen, werden diese nicht berücksichtigt, aber die Variable wird ordnungsgemäß festgelegt. Gleiches gilt für jede andere env-Variable.
Venimus
20

Das ist richtig, aber es ändert es nicht dauerhaft, sondern nur für die aktuelle Eingabeaufforderung. Wenn Sie es dauerhaft ändern möchten, müssen Sie zum Beispiel Folgendes verwenden:

setx ENV_VAR_NAME "DESIRED_PATH" /m

Dies wird es dauerhaft ändern und ja, Sie können es durch ein anderes Batch-Skript überschreiben.

Dummkopf
quelle
Vielleicht /mmuss danach sein setx?
Suzanshakya
Funktioniert für mich genauso, aber dieses Win Batch Scripting ist ein kleines, noch nicht abgeschlossenes Geschäft von MS. In meiner Firma, in der wir alle die gleichen Laptops mit dem gleichen System haben, gibt es kein universelles Skript für die PATH-Einstellung und wir pflegen 2 oder 3 davon, also was auch immer für Sie funktioniert :)
Dumbak
Danke für das Update. In Windows Server 2012, wenn ich legte /mam Ende, die DESIRED_PATHmit / m am Ende hinzugefügt nur für die aktuellen Benutzer.
Suzanshakya
11
Ein Wort der Vorsicht. Wenn ich setx für einen Pfad verwende und versuche, mehr hinzuzufügen, und die Zeichenfolge> 1024 lang ist, habe ich festgestellt, dass das Ergebnis (mein Umgebungspfad) dauerhaft abgeschnitten wurde. (Eine gute Sache, die ich hatte, konnte die% PATH%, die ich vor der Änderung ECHOed hatte, kopieren und mit dem Windows-Tool für Umgebungsvariablen zurücksetzen.)
Andreas Jansson
Beachtung! Dieser Befehl überschreibt direkt die Systemumgebungsvariable! Ich hatte sie gelöscht und versucht, sie zu beheben. Und auch für alle, die diesen Fehler gemacht haben: Starten Sie Ihren Computer nicht neu. Schreiben Sie echo %path%und Sie erhalten den aktuell geladenen Pfad. Sie müssen die Umgebungsvariablen Benutzer und System voneinander unterscheiden. Dann können Sie sie manuell an der richtigen Stelle anwenden.
Alper