Batch soll prüfen ob zwei Dateien existieren

Tristan_100

Cadet 2nd Year
Registriert
Jan. 2021
Beiträge
22
Hallo zusammen,
für ein Spiel möchte ich ein Batch Script machen, welches eine Datei mit einer anderen Datei öffnet (funktioniert bereits).
Zu dem soll man am Anfang zwei Pfade zu den beiden Dateien eintippen können, welche danach geprüft werden (ist die Datei vorhanden).


@Echo off
echo Script zum automatischen Aktivieren des 4GB Patch



set omsi_pfad = %C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\OMSI.exe% //definiert den 1. Pfad
set 4gb_patch_pfad = %C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\4gb_patch.exe% //definiert den 2. Pfad




if exist omsi_pfad goto pruefen 2 //prüft den 1. Pfad (ist die Datei im Pfad vorhanden)
) else (
goto :Fehler 1

pruefen 2
if exist 4gb_patch_pfad goto :Fehlerfrei //prüft den 2. Pfad (ist die Datei im Pfad vorhanden)
) else (
goto :Fehler 2

:Fehler 1
color c
echo -----------------------------------------------------------------
echo Die OMSI.exe wurde nicht gefunden. Bitte pruefe den OMSI Pfad im Script...
timeout 10
:Fehler 2
color c
echo -----------------------------------------------------------------
echo Die 4gb_patch.exe wurde nicht gefunden. Bitte pruefe den Pfad zum 4GB Patch im Script...
timeout 10

"%omsi_pfad%" "%4gb_patch_pfad%" // öffnet die 1. Datei mit der 2. Datei (Datei öffnen mit)
echo -----------------------------------------------------------------

:Fehlerfrei
color a
echo Der 4GB Patch wurde aktiviert...
timeout 3

Wenn der Pfad fehlerhaft oder nicht vorhanden ist, soll man erneut einen korrekten Pfad eingeben können.

Vielen Dank im Vorraus
 
Würde ich heute mit PowerShell machen. Ist bei jedem Windows vorhanden und wesentlich einfacher zum programmieren.
 
  • Gefällt mir
Reaktionen: Der Lord, bart0rn, Fujiyama und eine weitere Person
Tristan_100 schrieb:
für ein Spiel möchte ich ein Batch Script machen, welches eine Datei mit einer anderen Datei öffnet
Tristan_100 schrieb:
"%omsi_pfad%" "%4gb_patch_pfad%"
Naja, du öffnest nicht eine Datei mit einer anderen Datei. Damit führst du die 1. Datei aus und übergibst als Parameter den Pfad zur 2. Datei. Die erste Datei liest nun die Parameterliste aus und intepretiert diesen so, dass er die 2. Datei öffnen soll.
Dein Vorgehen funktioniert hier. Ich will damit nur erläutern, was du da eigentlich geschrieben hast. Es gibt kein "allgemeingültiges Öffnen mit" in dem man die zu öffnende Datei einfach als 1. Parameter anhängt. Das funktioniert zwar oft. Es gibt andere Programme, vor allem auf der Kommandozeile, welche noch Schalter oder Optionen benötigen, bevor der Pfad der zu verarbeitenden Datei kommen darf.
Dies ist der Dokumentation des jeweiligen Programms zu entnehmen bzw. kann oftmals auch anhand der Funktionalität abgeleitet werden.
 
Enigma schrieb:
Würde ich heute mit PowerShell machen. Ist bei jedem Windows vorhanden und wesentlich einfacher zum programmieren.
Wie könnte man "Öffnen mit" in PowerShell umsetzen?
scooter010 schrieb:
Naja, du öffnest nicht eine Datei mit einer anderen Datei. Damit führst du die 1. Datei aus und übergibst als Parameter den Pfad zur 2. Datei. Die erste Datei liest nun die Parameterliste aus und intepretiert diesen so, dass er die 2. Datei öffnen soll.
Dein Vorgehen funktioniert hier. Ich will damit nur erläutern, was du da eigentlich geschrieben hast. Es gibt kein "allgemeingültiges Öffnen mit" in dem man die zu öffnende Datei einfach als 1. Parameter anhängt. Das funktioniert zwar oft. Es gibt andere Programme, vor allem auf der Kommandozeile, welche noch Schalter oder Optionen benötigen, bevor der Pfad der zu verarbeitenden Datei kommen darf.
Dies ist der Dokumentation des jeweiligen Programms zu entnehmen bzw. kann oftmals auch anhand der Funktionalität abgeleitet werden.
Das "Öffnen mit" funktioniert einwandfrei.
Jedoch ist die Abfrage fehlerhaft.
 
@Echo off
echo Script zum automatischen Aktivieren des 4GB Patch

set omsi_pfad=C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\OMSI.exe
set 4gb_patch_pfad=C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\4gb_patch.exe

if exist "%omsi_pfad%" goto pruefen2
) else (
goto :Fehler1

pruefen2
if exist %4gb_patch_pfad% goto :Fehlerfrei
) else (
goto :Fehler2

goto :Fehlerfrei

:Fehler1
color c
echo -----------------------------------------------------------------
echo Die OMSI.exe wurde nicht gefunden. Bitte pruefe den OMSI Pfad im Script...
pause
exit /b 1
:Fehler2
color c
echo -----------------------------------------------------------------
echo Die 4gb_patch.exe wurde nicht gefunden. Bitte pruefe den Pfad zum 4GB Patch im Script...
pause
exit /b 2

:Fehlerfrei
"%omsi_pfad%" "%4gb_patch_pfad%"
color a
echo -----------------------------------------------------------------
echo Der 4GB Patch wurde aktiviert...
pause
exit /b 0
 
Zuletzt bearbeitet:
XN04113 schrieb:
@Echo off
echo Script zum automatischen Aktivieren des 4GB Patch

set omsi_pfad=C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\OMSI.exe
set 4gb_patch_pfad=C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\4gb_patch.exe

if exist "%omsi_pfad%" goto pruefen2
) else (
goto :Fehler1

pruefen2
if exist %4gb_patch_pfad% goto :Fehlerfrei
) else (
goto :Fehler2

:Fehler1
color c
echo -----------------------------------------------------------------
echo Die OMSI.exe wurde nicht gefunden. Bitte pruefe den OMSI Pfad im Script...
timeout 10
:Fehler2
color c
echo -----------------------------------------------------------------
echo Die 4gb_patch.exe wurde nicht gefunden. Bitte pruefe den Pfad zum 4GB Patch im Script...
timeout 10

"%omsi_pfad%" "%4gb_patch_pfad%"
echo -----------------------------------------------------------------

:Fehlerfrei
color a
echo Der 4GB Patch wurde aktiviert...
timeout 3
Ist dieses Script für Powershell oder Batch?
 
das ist Dein Batch funktionsfähig, also so etwas sollte man schon erkennen...
 
Man korrigiere mich, aber sind das nicht nur Sprungmarken? Das heißt, wenn man in "Fehler1" ankommt, geht's dann nicht stur durch die anderen Sprungmarken durch?
 
mental.dIseASe schrieb:
Man korrigiere mich, aber sind das nicht nur Sprungmarken? Das heißt, wenn man in "Fehler1" ankommt, geht's dann nicht stur durch die anderen Sprungmarken durch?
Das ist ein Problem u. A.
XN04113 schrieb:
das ist Dein Batch funktionsfähig, also so etwas sollte man schon erkennen...
Was ist der Unterschied zu meinem Script im Vergleich zu deinem Post?
Ich habe deinen Code getestet und das Script hat sich bloß geschlossen
 
Ich habe das Script mal getestet. Leider schließt es sich sofort wieder.
Der Befehl "Öffnen mit" funktioniert problemlos (habe ich mit einem anderen Test Script kurz getestet).

Anscheinend kann die Variable nicht richtig ausgelesen oder definiert werden.
Wie könnte man dies lösen?
 
Das Script oben ist fehlerhaft.

Code:
@Echo off
echo Script zum automatischen Aktivieren des 4GB Patch

set omsi_pfad=C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\OMSI.exe
set pfad_4gb_patch=C:\Program Files (x86)\SteamLibrary\steamapps\common\OMSI 2\4gb_patch.exe

if not exist "%omsi_pfad%" (
  goto :Fehler1
)

if not exist "%pfad_4gb_patch%" (
  goto :Fehler2
)

goto :Fehlerfrei


:Fehler1
color c
echo -----------------------------------------------------------------
echo Die OMSI.exe wurde nicht gefunden. Bitte pruefe den OMSI Pfad im Script...
pause
exit /b 1


:Fehler2
color c
echo -----------------------------------------------------------------
echo Die 4gb_patch.exe wurde nicht gefunden. Bitte pruefe den Pfad zum 4GB Patch im Script...
pause
exit /b 2


:Fehlerfrei
"%omsi_pfad%" "%pfad_4gb_patch%"
echo -----------------------------------------------------------------

color a
echo Der 4GB Patch wurde aktiviert...
pause
exit /b 0
 
Zurück
Oben