Ändern Sie das aktuelle Verzeichnis in das Batch-Dateiverzeichnis


18

Ich habe eine batDatei auf Windows, die eine Procdump- Operation ausführen . Das Problem mit der Batch-Datei ist, dass ich zuerst in das Batch-Dateiverzeichnis wechseln muss, bevor ich den Job ausführe, sonst funktioniert das Skript nicht.

Wie wechsle ich in das aktuelle Batch-Dateiverzeichnis?

Ich habe versucht, den folgenden Code in meinem procdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

Aber es ist fehlgeschlagen, die Fehlermeldung lautet:

Die folgende Verwendung des Pfadoperators bei der Batch-Parameter-Ersetzung ist ungültig:% ~ dp "

Für gültige Formate geben Sie CALL /? oder für /?

Bearbeiten: Die angegebene Antwort funktioniert, aber es gibt nur einen Haken: Wenn sich mein aktuelles Verzeichnis vom Batch-Dateiverzeichnis unterscheidet, wird die Meldung "Das System kann den angegebenen Pfad nicht finden" angezeigt. Hat jemand irgendwelche Ideen?


Woher bekommst du das "% ~ dp"?
Freitag,

Antworten:


24

Ok, ich glaube, ich habe hier gefunden , was du damit meinst %~dp.

Ich denke, was Sie wirklich tun möchten, ist Folgendes:

cd /D "%~dp0"

(!) Beachten Sie jedoch, dass Sie dadurch immer noch nicht das richtige Verhalten erhalten, wenn Sie versuchen, Ihren Stapel auszuführen, während sich das aktuelle Verzeichnis auf einem anderen Laufwerk befindet, da cddas aktive Laufwerk nicht geändert wird.

Bearbeiten : Anscheinend (dank @Yoopergeek ) können Sie den /DParameter zum cdBefehl hinzufügen , damit er auch das aktive Laufwerk ändert.


Weitere Informationen zu diesen Stapelparametern finden Sie help callan einer cmdEingabeaufforderung.
Bis auf weiteres angehalten.

Übrigens können Sie diese Parameter wie %~dp0
folgt

Ihre Antwort ist hilfreich. Befindet sich mein aktuelles Verzeichnis jedoch in einem anderen Verzeichnis als die Batch-Datei, schlägt der obige Befehl fehl. selbst cd /Doder cd "%~dp0" /Dkann nicht helfen.
Graviton

@ Ngu Soon Hui: Dass sich dein aktuelles Verzeichnis in einem anderen Verzeichnis befindet als die Batch-Datei, war offensichtlich. Aber warum sollte dieser Befehl fehlschlagen? Ich habe es hier getestet und es funktioniert.
Freitag,

1
Ich habe die Lösung mit gefunden cd /D "%~dp0". Vielen Dank.
Graviton

4

Ich würde fretjes Antwort einen Kommentar hinterlassen, aber offensichtlich kann ich das nicht ???


Wie auch immer, in Bezug auf den Hinweis:
Beachten Sie jedoch, dass dies immer noch nicht das richtige Verhalten für Sie darstellt, wenn Sie versuchen, Ihren Stapel auszuführen, während sich das aktuelle Verzeichnis auf einem anderen Laufwerk befindet, da CD das aktive Laufwerk nicht ändert.


Verwenden Sie den /DSchalter in Ihrem CD-Befehl, und CD wird das aktive Laufwerk ändern.


... dennoch kann ich meine eigene Antwort kommentieren. Mann, ist zum Kotzen, keinen Repräsentanten bei ServerFault zu haben ... ich wünschte, ein SO-Repräsentant wäre hierher gekommen.
Yoopergeek

1
@Yoopergeek: Sie können Ihre Konten zuordnen. Das gibt dir hier 100 Wiederholungen, wenn deine Wiederholung auf SO höher als 200 ist.
Freitag,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.