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!