Batch-Datei stürzt ab
Nach einer Usereingabe stürzt die Batch-Datei einfach ab. Ich benutze Windows XP
Hallo, ich hoffe ihr könnt mir helfen.
Ich programmiere gerade eine Batch-Datei für einen Freund - Das ist eigentlich meine erste Batch Datei. Die Datei soll die hosts datei ändern, damit man LineAge auf einem der inoffiziellen Server spielen kann. Das Script soll alles vereinfachen. Bei der Nachfrage, ob die hosts Datei wiederhergestellt werden soll und bei der Antwort "y" stürzt mein Script einfach ab.
Ich würde mich über eine Lösung sehr freuen.
Hier das Script:
Danke!
MfG
Stefreak
Ich programmiere gerade eine Batch-Datei für einen Freund - Das ist eigentlich meine erste Batch Datei. Die Datei soll die hosts datei ändern, damit man LineAge auf einem der inoffiziellen Server spielen kann. Das Script soll alles vereinfachen. Bei der Nachfrage, ob die hosts Datei wiederhergestellt werden soll und bei der Antwort "y" stürzt mein Script einfach ab.
Ich würde mich über eine Lösung sehr freuen.
Hier das Script:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: IP Helper fuer LineAge II ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Copyright (C) 2007 Steffen Neubauer computer-brain.net ::
:: Lizenz: GNU GPL v2 only ::
:: Achtung! Der Autor dieses Scripts haftet in keinem Fall ::
:: fuer Schaeden an Hadware oder Software an diesem ::
:: Computer ausgeloest durch die Benutzung dieses Scripts! ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
echo BEGINN LOG > log.txt
echo Achtung! Der Autor dieses Scripts haftet in keinem Fall fuer Schaeden an Hadware oder Software an diesem Computer ausgeloest durch die Benutzung dieses Scripts!
Pause
IF not exist "%windir%\system32\drivers\etc\hosts" goto FEHLER
echo Alles Klar! Ich beginne.
Pause
echo hosts-datei exisitiert >> log.txt
copy "%windir%\system32\drivers\etc\hosts" "%windir%\system32\drivers\etc\hosts_sicherung" >> log.txt
SET /P IP=IP-Adresse eingeben ...
echo >> %windir%\system32\drivers\etc\hosts
echo %IP% l2authd.lineage2.com >> %windir%\system32\drivers\etc\hosts
echo Die IP wurde in die hosts-datei geschrieben >> log.txt
echo !DAS PROGRAMM DARF KEINESFALLS GESCHLOSSEN WERDEN!
echo Ich starte nun LineAge II.
IF not exist "C:\Programme\Lineage II\system\L2.exe" goto HAND
CALL "C:\Programme\Lineage II\system\L2.exe"
echo LineAge II gestartet. >> log.txt
Pause
goto DANACH
:HAND
echo Bitte starte LineAge2 nun von Hand. Duecke erst eine beliebige Taste, wenn du fertig bist mit spielen. Beende dieses Script auf keinen Fall selbstständig!
echo LineAge II von Hand gestartet. >> log.txt
Pause
:DANACH
echo Nun solltest du LineAge II gespielt haben.
Pause
:DANACHDANACH
SET /P LOESCHEN=Moechtest du, dass die hosts-datei wiederhergestellt wird? (y/n) ...
IF %LOESCHEN% = "y" GOTO DANACH-Y
IF %LOESCHEN% = "n" GOTO DANACH-N
echo Bitte gib entweder y (Ja) oder n (Nein) an.
Pause
goto DANACHDANACH
:DANACH-Y
echo ich stelle die hosts-Datei nun wieder her.
IF not exist %windir%\system32\drivers\etc\hosts_sicherung goto FEHLERFEHLER
DEL %windir%\system32\drivers\etc\hosts
COPY %windir%\system32\drivers\etc\hosts_sicherung %windir%\system32\drivers\etc\hosts
DEL %windir%\system32\drivers\etc\hosts_sicherung
echo Wiederherstellung war erfolgreich.
Pause
goto ENDE
:DANACH-N
goto ENDE
:FEHLER
echo Die hosts-Datei konnte nicht gefunden werden.
echo Die hosts-Datei konnte nicht gefunden werden. >> log.txt
goto ENDE
:FEHLERFEHLER
echo Fehler. Ich kann die Datei nicht wiederherstellen.
echo Wiederherstellen der hosts-Datei fehlgeschlagen. >> log.txt
Pause
goto ENDE
:ENDE
echo ENDE LOG >> log.txt
echo Danke, dass du mich verwendet hast. Copyright (C) 2007 Steffen Neubauer - www.computer-brain.net - GNU GPL v2 only
Pause
Danke!
MfG
Stefreak
Please also mark the comments that contributed to the solution of the article
Content-Key: 50905
Url: https://administrator.de/contentid/50905
Printed on: April 23, 2024 at 13:04 o'clock
6 Comments
Latest comment
du logst doch alles schön mit, was steht denn dadrin, nachem dein Batch abgestürzt ist. Die letzte Zeile müsste die ja noch den letzten erfolgreichen Schritt preisgeben und dann kann man näher suchen.
Wenn du "n" eingibst, läuft es dann durch
Wenn du "n" eingibst, läuft es dann durch
Moin stefreak,
willkommen im Forum.
Für eine "erste" Batchdatei sehr ordentlich... *anmerk
(Rein handwerklich - soll kein moralischer Freifahrtschein für oder gegen LineAge sein).
Hier ist der eine oder andere Bug:
JETZT:
Besser:
Wesentlich sind die Delimiter (in Deinem Fall Anführungszeichen, die auf beiden Seiten des doppelten Vergleichs-Gleichheitszeichens da sein sollten.
IF /i [%LOESCHEN%] == [y] GOTO.... --> ginge genauso.
Gruss
Biber
P.S. "Hadware" ...sprecht ihr aber erstaunlich weich aus in Eurem Club...
willkommen im Forum.
Für eine "erste" Batchdatei sehr ordentlich... *anmerk
(Rein handwerklich - soll kein moralischer Freifahrtschein für oder gegen LineAge sein).
Hier ist der eine oder andere Bug:
JETZT:
IF %LOESCHEN% = "y" GOTO DANACH-Y
IF %LOESCHEN% = "n" GOTO DANACH-N
:: der Schalter /i ist unwesentlich... nur für Ignoriere KleinGrossSchreibung
IF /i "%LOESCHEN%" == "y" GOTO DANACH-Y
IF /i "%LOESCHEN%" == "n" GOTO DANACH-N
Wesentlich sind die Delimiter (in Deinem Fall Anführungszeichen, die auf beiden Seiten des doppelten Vergleichs-Gleichheitszeichens da sein sollten.
IF /i [%LOESCHEN%] == [y] GOTO.... --> ginge genauso.
Gruss
Biber
P.S. "Hadware" ...sprecht ihr aber erstaunlich weich aus in Eurem Club...
Was heißt den das die Batch "abstürzt"? Hast du sie den schonmal vom cmd aus ausgeführt? vielleicht siehst du dan mehr.
Du kannst ja zum Debugen mal das @echo off weglassen das du siehst was passiert. Oder altenativ immerwieder infos in eine Zweite log schreiben wo es gerade steht. Theoretisch reichen hier Zahlenwerte und es reicht ja wenn dus auf den Bereich einschränkst indem der Fehler auftrit. Da kansn tdu dann sogar Zeilenweise immer mitloggen wo es gerade steht und auch bei jedem Befehl eventuelle Fehlermeldungen beim löschen oder koppieren mit 2>> mitprotokollieren. Das funktionier grundsätzlich bei allen Batches zum Fehler suchen gut.
miniversum
Du kannst ja zum Debugen mal das @echo off weglassen das du siehst was passiert. Oder altenativ immerwieder infos in eine Zweite log schreiben wo es gerade steht. Theoretisch reichen hier Zahlenwerte und es reicht ja wenn dus auf den Bereich einschränkst indem der Fehler auftrit. Da kansn tdu dann sogar Zeilenweise immer mitloggen wo es gerade steht und auch bei jedem Befehl eventuelle Fehlermeldungen beim löschen oder koppieren mit 2>> mitprotokollieren. Das funktionier grundsätzlich bei allen Batches zum Fehler suchen gut.
miniversum
Das verstehe ich wieder nicht ;)
Na ja,ich kann es einfach weiter hier stehen lassen zum gelegentlichen Knobeln... eilt ja nicht.
Da ich denke, dass das eigentliche Syntax-Problem erkannt und erledigt ist, können wir den Beitrag schließen (Also Du auf "Gelöst", ich auf "Geschlossen" setzen)?
Schönen Abend
Biber