Variabler Dateipfad in .bat
Hi ist ne ganz kurze sache.
ich habe mir ne kleine *.bat Datei geschrieben, die mir zwei programme öffnet.
call D:\Temp\Helpsoft\Programm1.exe
call D:\Temp\Helpsoft\Programm2.exe
ich möchte mir die Datei jetzt auf einen USB Stick machen, jedoch möchte ich nicht jedesmal den Laufwerksbuchtaben ändern. Ich möchte, das er immer den aktuellen Laufwerkbuchtaben nimmt, kann ja sein, das 2 USB Sticks angeschlossen sind und er dann nicht den richtigen Laufwerkbuchstaben aht, deswegen wäre variabel nicht schlecht.
In excel habe ich sowas schonmal gemacht mit "This.Workbookpath" pder so ähnlich.
gibt es hier diese funktion auch?
Danke schonmal.
Gruß
ich habe mir ne kleine *.bat Datei geschrieben, die mir zwei programme öffnet.
call D:\Temp\Helpsoft\Programm1.exe
call D:\Temp\Helpsoft\Programm2.exe
ich möchte mir die Datei jetzt auf einen USB Stick machen, jedoch möchte ich nicht jedesmal den Laufwerksbuchtaben ändern. Ich möchte, das er immer den aktuellen Laufwerkbuchtaben nimmt, kann ja sein, das 2 USB Sticks angeschlossen sind und er dann nicht den richtigen Laufwerkbuchstaben aht, deswegen wäre variabel nicht schlecht.
In excel habe ich sowas schonmal gemacht mit "This.Workbookpath" pder so ähnlich.
gibt es hier diese funktion auch?
Danke schonmal.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 84062
Url: https://administrator.de/forum/variabler-dateipfad-in-bat-84062.html
Ausgedruckt am: 22.04.2025 um 01:04 Uhr
6 Kommentare
Neuester Kommentar
klappt noch nicht so ganz.
er öffnet es zwar, aber das steht da
D:\Temp>call D:\Temp\Tfes.pdf
in der batch selber steht
call %~d0\Temp\Tfes.pdf
Das stimt ja so. Wenn die Batch auf dem Laufwerk D: liegt stellt das %~d0 eben das D: dar.er öffnet es zwar, aber das steht da
D:\Temp>call D:\Temp\Tfes.pdf
in der batch selber steht
call %~d0\Temp\Tfes.pdf
wenn ich die batch jetzt aber in das selbe verzeichneis wie die Tfes.pdf kopiere und das \Temp weg mache, dann geht es nichtmehr. das sollte es doch oder?
Nein ist klar das es so nicht geht. Schau dir nochmal mein posting oben an.%~d0 stellt NUR den laufwerksbuchstaben dar indem die Batch liegt. %~dp0 stellt Laufwerksbuchstaben UND verzeichnis dar indem die Batch liegt. Daher werden bei dir wenn du das /temp entfernst die Dateien ncith merh gefunden. wenn du die Batch im gleichen verzeichnis liegen hast ie die andern dateien dann must du also aus deinem
call %~d0\Temp\Tfes.pdf
eincall %~dp0\Tfes.pdf
machen.In diesem fall kannst du aber auch eigentlich gleich mit relativen Pfadangaben arbeiten und den aufruf nur so machen:
call Tfes.pdf
Hallo MichaelS87!
Wie miniversum oben schon beschrieben hat, ist der Pfad der Batchdatei unter "%~dp0" zu erreichen - daher müsste es
heißen.
Falls es auch noch Leerzeichen im Pfad gäbe, zusätzlich Anführungszeichen verwenden:
Grüße
bastla
[Edit] @miniversum: Sorry, hatte nicht gesehen, dass Du wieder da bist .. [/Edit]
wenn ich die batch jetzt aber in das selbe verzeichneis wie die Tfes.pdf kopiere und das \Temp weg mache, dann geht es nichtmehr. das sollte es doch oder?
Nicht unbedingt - Du erzeugst ja damit dann eincall D:\Tfes.pdf
Wie miniversum oben schon beschrieben hat, ist der Pfad der Batchdatei unter "%~dp0" zu erreichen - daher müsste es
call %~dp0\Tfes.pdf
Falls es auch noch Leerzeichen im Pfad gäbe, zusätzlich Anführungszeichen verwenden:
call "%~dp0\Tfes.pdf"
Grüße
bastla
[Edit] @miniversum: Sorry, hatte nicht gesehen, dass Du wieder da bist .. [/Edit]
Also wenn die Batch vorher so funktionierte würde ich sagen das eine Änderung zu
Das andere würde ich sicherheitshalber lieber nicht machen, denn sollte die Batch in einem Verzeichnis liegen das ein Leerzeichen enthält würde das zu problemen führen. Die alternative dazu würde dann besser so aussehen:
miniversum
set "Start=w\md01 w\md02 w\md03 w\md04 x\md01"
funktionieren sollte.Das andere würde ich sicherheitshalber lieber nicht machen, denn sollte die Batch in einem Verzeichnis liegen das ein Leerzeichen enthält würde das zu problemen führen. Die alternative dazu würde dann besser so aussehen:
set "Start=w\md01 w\md02 w\md03 w\md04 x\md01"
und zusätzlich folgende Änderung:for %%S in (%Start%) do for /f "delims=" %%A in ('dir /b /ad "%~dp0\%%S\%Maske%*.*" 2^>nul') do echo %%~nA$%%~fA >>"%List%"
miniversum
Moin MichaelS87,
Dann müssen wir etwas dicker auftragen:
Grüße
Biber
ich habe es so versucht, jedoch ohne erfolg.
set "Start=%~dp0\w\md01 %~dp0\w\md02 %~dp0\w\md03 %~dp0\w\md04 %~dp0\x\md01"
Dann können wirklich nur, wie miniversum schon schrieb, Leerzeichen im %dp0-Pfad der Klemmer sein.set "Start=%~dp0\w\md01 %~dp0\w\md02 %~dp0\w\md03 %~dp0\w\md04 %~dp0\x\md01"
Dann müssen wir etwas dicker auftragen:
set "Start="%~dp0\w\md01" "%~dp0\w\md02" "%~dp0\w\md03" "%~dp0\w\md04" "%~dp0\x\md01""
Grüße
Biber