647 Stimmen

Was ist das aktuelle Verzeichnis in einer Batch-Datei?

Ich möchte einige Batch-Dateien erstellen, um ein Programm zu automatisieren.

Meine Frage ist, wenn ich die Stapeldatei erstelle, was ist das aktuelle Verzeichnis? Ist es das Verzeichnis, in dem sich die Datei befindet, oder ist es das gleiche Verzeichnis, das in der Eingabeaufforderung erscheint, oder etwas anderes?

1267voto

JRL Punkte 74309

In Ihrer Batch-Datei:

  • %cd% bezieht sich auf die aktuelles Arbeitsverzeichnis (variabel)
  • %~dp0 verweist auf den vollständigen Pfad zum Verzeichnis der Batch-Datei (statisch)
  • %~dpnx0 y %~f0 verweisen beide auf den vollständigen Pfad zum Batch-Verzeichnis und den Dateinamen (statisch).

Siehe auch: Was bedeutet %~dp0, und wie funktioniert es?

29voto

GolezTrol Punkte 111587

Es in der Regel ist das Verzeichnis, aus dem die Stapeldatei gestartet wird, aber wenn Sie die Stapeldatei über eine Verknüpfung starten, kann ein anderes Startverzeichnis angegeben werden. Wenn Sie sich in cmd befinden und Ihr aktuelles Verzeichnis ist c:\dir3 können Sie die Stapeldatei trotzdem starten, indem Sie c:\dir1\dir2\batch.bat in diesem Fall wird das aktuelle Verzeichnis c:\dir3 .

16voto

J. Bond Punkte 426

In einer Stapeldatei ist %cd% der gebräuchlichste Befehl für das aktuelle Verzeichnis, aber Sie können auch eine eigene Variable setzen:

set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)

Nehmen wir an, Sie möchten Myprog.exe öffnen. Wenn sie sich im gleichen Ordner befindet, würden Sie den Befehl verwenden:

start %mypath%\Myprog.exe

Dadurch wird Myprog aus dem aktuellen Ordner geöffnet.

Die andere Möglichkeit besteht darin, in C: ein Verzeichnis mit dem Namen AutomatePrograms anzulegen. Dann übertragen Sie Ihre Dateien in diesen Ordner und können sie mit dem folgenden Befehl öffnen:

start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"

13voto

npocmaka Punkte 52753

%__CD__% , %CD% , %=C:%

Außerdem gibt es eine weitere dynamische Variable %__CD__% die auf das aktuelle Verzeichnis zeigt, aber im Gegensatz zu %CD% es hat einen Backslash am Ende. Dies kann nützlich sein, wenn Sie Dateien an das aktuelle Verzeichnis anhängen wollen. Auch %CD% funktioniert nicht in einer Umgebung mit deaktivierten Erweiterungen, aber %__CD__% funktioniert immer.

Mit %=C:% %=D:% können Sie auf das zuletzt aufgerufene Verzeichnis für das entsprechende Laufwerk zugreifen. Wenn die Variable nicht definiert ist, haben Sie in der aktuellen cmd-Sitzung nicht auf das Laufwerk zugegriffen.

Und %__APPDIR__% expandiert zu der ausführbaren Datei, die das aktuelle Skript ausführt, auch bekannt als cmd.exe Verzeichnis.

8voto

Angenommen, Sie öffnen eine Datei in Ihrem aktuellen Verzeichnis. Der Befehl würde lauten:

 start %cd%\filename.filetype

Ich hoffe, ich habe Ihre Frage beantwortet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X