Ä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?

Graviton
quelle
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.

fretje
quelle
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.

Yoopergeek
quelle
... 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,