Speicherort des Batchfiles auslesen

Hallo!

Ich suche nach einer Möglichkeit, innerhalb einer Batch-Datei (Endung BAT/CMD) deren Speicherot auszulesen.
Ich würde gerne Protokolldateien im gleichen Verzeichnis erstellen.
Es geht um den Teil der im Parameter %0 steht, aber ohne den Namen des Scripts und der Erweiterung.Es ist hier nicht das Startverzeichnis gemeint!

Beispil:
Das Startverzeichnis, dort wo die Eingabeaufforderung gerade steht: D:\Mist
Der Speicheroret der Batchdatei: C:\Tools

Nun soll die Protokolldatei nicht im D:\Mist erstellt werden sondern unter C:\Tools

Es geht um verschiedene CMDs in verschiedenen Verzeichnissen deshalb kann ich in der CMD keinen absoluten Pfad verwenden.

Kennt die Eingabeaufforderung sowas wie PWD (Print Working Directory) bei FTP?

Danke!
Kid

Hi …

Kennt die Eingabeaufforderung sowas wie PWD (Print Working
Directory) bei FTP?

Ja. Interaktiv: cd (ohne Parameter)

Du könntest das in der Batch in eine Pipeline schreiben um an den Wert heranzukommen.

Es geht aber auch einfacher: die neueren Windows Versionen kennen eine Batch Variable %CD%, die auf das aktuelle Verzeichnis zeigt. Hab schnell eine testdatei zusammengeschustert, und es klappt so wie Du willst:

@echo off
echo %0
echo %cd%

Der erste Echo enthält den Aufruf der Batch, Meistens ist da der Speicherpfad mit drinnen, aber wenn die Batch über den Suchpfad (%Path%) gestartet wurde, fehlt das Programmverzeichnis. Ansonsten könnte man es mit set … ~ Kommandos gut aus dem %0 Parameter herauskitzeln.

Aber für Deine Zwecke dürfte die zweite Zeile echo %cd% das Gesuchte bringen.

Getestet mit Windows 7. Tut. Starte ich c:\mist\test.bat von c:\ aus, bekomme ich folgende Ausgaben:

c:\mist\test.-bat
c:\

Gruss Armin.