Detlef G.: Windows Shell - Ordnernamen herausfinden

Beitrag lesen

Hallo Dieter

ich habe noch eine Nachfrage. Ich habe das Script aus deinem Posting kopiert und getestet, das Ergebnis ist allerdings nicht das gewuenschte.

Das Script D:\htdocs\test.cmd hat den Inhalt
@ECHO OFF
FOR /F "usebackq delims=/" %%A IN (CD) DO SET PWD=%%~fA
SET PWD

Du übergibst dem FOR-Befehl die Ausgabe von CD (Parameter /F und „('CD')”) und setzt PWD mit dieser - expandiert als vollständigen Dateinamen („%~fA”).

Du willst aber den Pfad der aktuell ausgeführten Batch-Datei haben.

Das ist aber meine Working directory, das erwuenschte Ergebnis waere D:\htdocs gewesen, weil die Batchdatei sich dort befindet. Gibt es dafuer eine Loesung?

Der Aufruf einer Batch- oder CMD-Datei (ohne Parameter) befindet sich im Parameter 0 (%0). Wenn die CMD-Datei nicht im Path ist, also komplett mit Pfad aufgerufen wird, müsste es so funktionieren:

@echo off
FOR %%A IN (%0) DO SET PWD=%%~dpA
echo %PWD%

Wir füttern FOR nicht mit einer Befehlsausgabe sondern mit dem Inhalt von Parameter 0, dem Programmaufruf selbst, filtern oder erzeugen daraus Laufwerk und Dateiname („%~dpA”) und setzen damit die Umgebungsvariable PWD.

Das funktioniert allerdings nur, wenn die Batch-(CMD-)Datei mit Pfad aufgerufen wird - nicht, wenn sie gefunden wird, weil sie im PATH steht.

Dann könnte allerdings auch eine einfachere Variante ohne extra Umgebungsvariable funktionieren:

@echo off

rem Alles, was du tun willst

%0X

Batch 1 müsste dann z.B. „batch.cmd” heißen und ohne Erweiterung aber mit komplettem Pfad aufgerufen werden und Batch 2 müsste in dem Beispiel „batchX.cmd” heißen.

Auf Wiederlesen
Detlef

--
- Wissen ist gut
- Können ist besser
- aber das Beste und Interessanteste ist der Weg dahin!