stefreak
Goto Top

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:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::              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

Content-Key: 50905

Url: https://administrator.de/contentid/50905

Printed on: April 23, 2024 at 13:04 o'clock

Mitglied: 16409
16409 Feb 06, 2007 at 15:30:05 (UTC)
Goto Top
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
Member: Biber
Biber Feb 06, 2007 at 15:51:47 (UTC)
Goto Top
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:
     IF %LOESCHEN% = "y" GOTO DANACH-Y  
     IF %LOESCHEN% = "n" GOTO DANACH-N  
Besser:
 :: 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... face-wink
Member: miniversum
miniversum Feb 06, 2007 at 16:30:52 (UTC)
Goto Top
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
Member: stefreak
stefreak Feb 06, 2007 at 18:37:33 (UTC)
Goto Top
Für eine "erste" Batchdatei
sehr ordentlich... *anmerk
Danke, habe aber auch etwas Erfahrung in anderen Sprachen wie Basic, Python, PHP und lerne grade Java, C, C++ .... Batch war da ein Klacks face-smile
(Rein handwerklich - soll kein moralischer
Freifahrtschein für oder gegen LineAge
sein).
Ich verstehe zwar nicht was du damit meinst, aber das ist ja auch unwichtig...

Hier ist der eine oder andere Bug:
JETZT:
     IF %LOESCHEN% =
> "y" GOTO DANACH-Y  
>      IF %LOESCHEN% = "n" GOTO  
> DANACH-N
> 
Besser:
 :: der Schalter /i ist
> unwesentlich... nur für Ignoriere
> KleinGrossSchreibung
>     IF /i "%LOESCHEN%" ==  
> "y" GOTO DANACH-Y  
>     IF /i "%LOESCHEN%" ==  
> "n" GOTO DANACH-N  
> 


Das hat geholfen DANKE!!!

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

SUPER! Danke!

MfG
Stefreak


P.S. "Hadware" ...sprecht ihr aber
erstaunlich weich aus in Eurem Club... face-wink


Das verstehe ich wieder nicht ;)
Member: Biber
Biber Feb 06, 2007 at 19:02:11 (UTC)
Goto Top
Das verstehe ich wieder nicht ;)
Na ja,

ich kann es einfach weiter hier stehen lassen zum gelegentlichen Knobeln... eilt ja nicht. face-wink

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
Member: stefreak
stefreak Feb 06, 2007 at 19:19:47 (UTC)
Goto Top
Wer Interesse hat: Da ist das release

http://www.computer-brain.net/LineAgeII%20IP%20Helper.zip


MfG
Stefreak