Versuchen Sie, wie folgt auf den Pfad der Batchdateien zuzugreifen:
echo %~dp0
Weitere Informationen finden Sie im folgenden Zitat aus dem Befehl for /?
, in dem die Funktionsweise des obigen Befehls beschrieben wird:
Sie können jetzt die folgende optionale Syntax verwenden:
% ~ I - erweitert% I und entfernt alle umgebenden Anführungszeichen (")
% ~ fI - erweitert% I zu einem vollständig qualifizierten Pfadnamen
% ~ dI - erweitert% I nur zu einem Laufwerksbuchstaben
% ~ pI - erweitert% I nur zu einem Pfad
% ~ nI - erweitert% I nur auf einen Dateinamen
% ~ xI - erweitert% I nur um eine Dateierweiterung
% ~ sI - Der erweiterte Pfad enthält nur Kurznamen
% ~ aI - erweitert% I auf Dateiattribute der Datei
% ~ tI - erweitert% I auf Datum / Uhrzeit der Datei
% ~ zI - erweitert% I auf die Dateigröße
% ~ $ PATH: I - durchsucht die im PATH aufgelisteten Verzeichnisse
Umgebungsvariable und erweitert% I auf die
voll qualifizierter Name des ersten gefundenen.
Wenn der Name der Umgebungsvariablen nicht lautet
definiert oder die Datei wird von der nicht gefunden
Suche, dann erweitert sich dieser Modifikator auf die
leerer String
Die Modifikatoren können kombiniert werden, um zusammengesetzte Ergebnisse zu erhalten:
% ~ dpI - erweitert% I nur auf einen Laufwerksbuchstaben und einen Pfad
% ~ nxI - erweitert% I nur auf einen Dateinamen und eine Erweiterung
% ~ fsI - erweitert% I zu einem vollständigen Pfadnamen mit nur kurzen Namen
% ~ dp $ PATH: I - durchsucht die im PATH aufgelisteten Verzeichnisse
Umgebungsvariable für% I und erweitert sich auf die
Laufwerksbuchstabe und Pfad des ersten gefunden.
% ~ ftzaI - erweitert% I zu einer DIR-ähnlichen Ausgangsleitung
pushd
untenBesser als
cd
heißenpushd
dieD:\...
Ist
pushd %~dp0
also gut.Es empfiehlt sich dann, nach Abschluss anzurufen
popd
.quelle
Dies sollte Ihr Problem lösen, indem Sie das Arbeitsverzeichnis für die Batchdatei auf das aktuelle Verzeichnis zurücksetzen:
Fügen Sie diese beiden Zeilen oben in Ihr .bat-Skript ein:
Gefunden unter: http://www.codeproject.com/Tips/119828/Running-a-bat-file-as-administrator-Correcting-cur
quelle
Ich benutze:
cd% 0 ..
am Anfang der Batchdatei, um das Verzeichnis in das Verzeichnis zu ändern, in dem die Batchdatei gestartet wurde.
-Mathew
quelle
cd %0/../
einfach in 👍Sie können direkt vom Dateinamen CD hinzufügen, indem Sie das übergeordnete Element hinzufügen (nicht in Windows 8.x getestet, hat aber, soweit ich mich erinnern kann, "für immer" funktioniert).
und CD wechselt auch die Laufwerke mit / D, was oben gezeigt, aber nicht explizit erwähnt wird und daher möglicherweise übersehen wird. CD / D% FILENAME% \ ..
(FOR /? IF /? SET /? CALL /? GOTO /? Alle bieten sehr nützliche Informationen, wenn Sie cmd.exe verwenden. Ich lese sie gelegentlich erneut.)
quelle
@setlocal enableextensions
@cd / d "% ~ dp0"
quelle
Fügen Sie diese beiden Zeilen oben in Ihr .bat-Skript ein, um dieses Problem zu beheben:
quelle
Eine funktionierende Lösung hier:
http://www.vistax64.com/vista-general/79849-run-administrator-changes-default-directory.html
FOR / F %% I IN ("% 0") SETZEN SIE BATDIR = %% ~ dpI
ECHO Die Batchdatei befindet sich im Verzeichnis% BATDIR%
quelle
%~dp0
direkt verwenden. Hier muss nicht aufgerufenfor
werden.