Überprüfen ob Batch im korrekten Ordner liegt
Hallo,
ich würde gerne nochmal eure Hilfe in Anspruch nehmen, zwar hat die Suche doch einiges ausgeworfen, aber so ganz habe ich nicht gefunden was ich wissen wollte. Ich möchte das die .bat von sich aus überprüft, ob sie im korrekten Verzeichnis ausgeführt wird. Dafür dachte ich, würde es ausreichen wenn ich das ganze mit if exist angehe. Das Problem ist, das hierbei anscheinend die kompeltte Platte als Referenz dient, ob Verzeichnissname1 existiert, dementsprechend ist das Ergebniß natürlich immer positiv.
Ich möchte aber das die Batch nur folgendes prüft:
Ist das Verzeichnis in dem ich liege und ausgeführt werde das Verzeichnis mit dem Namen Verzeichnisname1
Wenn ja, gut, Batch soll durchlaufen
Wenn nein, schlecht, Batch soll ausgeben das sie nicht im korrekten Verzeichnis Verzeichnissname1 liegt sondern sonstwo
Einen absoluten Pfad kann ich nicht verwenden, da die .bat auf verschiedenen Rechner ausgeführt werden wird. Das ganze muß also relativ zum Scriptdir gehalten sein.
Hier der Codeschnipsel:
Danke das ihr euch das ganze mal angesehen habt.
ich würde gerne nochmal eure Hilfe in Anspruch nehmen, zwar hat die Suche doch einiges ausgeworfen, aber so ganz habe ich nicht gefunden was ich wissen wollte. Ich möchte das die .bat von sich aus überprüft, ob sie im korrekten Verzeichnis ausgeführt wird. Dafür dachte ich, würde es ausreichen wenn ich das ganze mit if exist angehe. Das Problem ist, das hierbei anscheinend die kompeltte Platte als Referenz dient, ob Verzeichnissname1 existiert, dementsprechend ist das Ergebniß natürlich immer positiv.
Ich möchte aber das die Batch nur folgendes prüft:
Ist das Verzeichnis in dem ich liege und ausgeführt werde das Verzeichnis mit dem Namen Verzeichnisname1
Wenn ja, gut, Batch soll durchlaufen
Wenn nein, schlecht, Batch soll ausgeben das sie nicht im korrekten Verzeichnis Verzeichnissname1 liegt sondern sonstwo
Einen absoluten Pfad kann ich nicht verwenden, da die .bat auf verschiedenen Rechner ausgeführt werden wird. Das ganze muß also relativ zum Scriptdir gehalten sein.
Hier der Codeschnipsel:
@echo off
if exist Verzeichnisname1\nul <goto Verzeichnisexistiert> Else echo Die .bat liegt nicht im korrekten Verzeichnis Verzeichnisname1 sondern unter %cd%!
:Verzeichnisexistiert
echo Das Verzeichnis wurde gefunden!
pause
Danke das ihr euch das ganze mal angesehen habt.
Please also mark the comments that contributed to the solution of the article
Content-ID: 66433
Url: https://administrator.de/contentid/66433
Printed on: December 7, 2024 at 20:12 o'clock
7 Comments
Latest comment
set VerzeichnisR=E:\_private\Scripts\Test
set VerzeichnisC=%CD%
if %VerzeichnisC% == %VerzeichnisR% echo Fehler
if %VerzeichnisC% = %VerzeichnisR% goto Verzeichnisexistiert
pause
:Verzeichnisexistiert
echo nun kanns losgehen
pause
exit
Hallo Isisas83!
Grüße
bastla
P.S.: Wo die Batchdatei selbst "liegt", kannst Du durch Auswertung von %0 feststellen, für den Pfad also: echo %~p0
Einen absoluten Pfad kann ich nicht verwenden, da die .bat auf verschiedenen Rechner ausgeführt werden wird. Das ganze muß also relativ zum Scriptdir gehalten sein.
Du könntest also eigentlich nur das Vorhandensein von "Verzeichnisname1" innerhalb des aktuellen Pfades überprüfen, also:@echo off
echo %cd%|find "Scriptdir\Verzeichnisname1">nul && goto :Verzeichnisexistiert
echo Die .bat liegt nicht im korrekten Verzeichnis Verzeichnisname1 sondern unter %cd%
goto :eof
:Verzeichnisexistiert
echo Das Verzeichnis wurde gefunden!
Grüße
bastla
P.S.: Wo die Batchdatei selbst "liegt", kannst Du durch Auswertung von %0 feststellen, für den Pfad also: echo %~p0
Hallo Isias83!
Deine Erweiterungen finde ich verbesserungswürdig ...
Aus
folgt: Wenn nicht "goto" ausgeführt wurde, ist dadurch ohnehin schon sicher, dass %Verzeichnispfad% nicht gleich "maps" ist, daher ist die zweite Abfrage überflüssig und es könnte gleich der Fehlertext ausgegeben werden.
Vielleicht als abschließende Version daher:
Das Label ":Verzeichnisstimmtnicht" hat dabei nur eine Kommentarfunktion, wird aber nicht benötigt.
Grüße
bastla
Deine Erweiterungen finde ich verbesserungswürdig ...
Aus
if "%Verzeichnispfad%"=="maps" goto Verzeichnisstimmt
Vielleicht als abschließende Version daher:
@echo off
for /f "delims=" %%i in ('echo %cd%') do set "Verzeichnispfad=%%~ni"
if "%Verzeichnispfad%"=="maps" goto Verzeichnisstimmt
:Verzeichnisstimmtnicht
echo Das Batch liegt nicht im korrekten Verzeichnis maps, sondern unter %cd%
pause
goto :eof
:Verzeichnisstimmt
echo Das Batch liegt im korrekten Verzeichnis maps
pause
Grüße
bastla