Supportnet / Forum / Anwendungen(Java,C++...)
Batch-File, das korrigiert werden müsste
Frage
Hi,
ich bin gerade an einer Batchdatei, die zum Auswählen von drei verschiedenen Fernwartungsverknüpfungen dienen soll. Die Auswahl soll wirklich idiotensicher sein, deswegen habe ich auch sehr viele -meiner Meinung nach- unnötige Funktionen eingebaut.
[quote]
@echo off
@echo Waehlen Sie bitte zwischen Rechner Bruno, Rechner Renate und SERVER. Tippen Sie dazu entweder b, r oder s ein!
:setgogo
@echo.
@set/p gogo=
:Abfrage Bruno
if "%gogo%"=="b" GOTO Bruno
if NOT "%gogo%"=="b" GOTO AbfrageRenate
:AbfrageRenate
if "%gogo%"=="r" GOTO Renate
if NOT "%gogo%"=="r" GOTO AbfrageExit
:AbfrageExit
if "%gogo%"=="exit" exit
if NOT "%gogo%"=="exit" GOTO AbfrageServer
:AbfrageServer
if "%gogo%"=="s" GOTO AbfrageServerOnline
if NOT "%gogo%"=="s" GOTO Mental
:AbfrageServerOnline
@alive /repeat=1 /timeout=1 Server
if %ERRORLEVEL%=="0" GOTO Serveron
if NOT %ERRORLEVEL%=="0" GOTO Serveroff
:Bruno
@explorer C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Symantec\pcAnywhere\Remotes\Geschaeft.CHF
@exit
:Renate
@explorer C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Symantec\pcAnywhere\Remotes\Geschaeft xp.CHF
@exit
:Serveron
@explorer C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Symantec\pcAnywhere\Remotes\Server.CHF
@exit
:Mental
@echo.
@echo Sie haben sich vertippt! Sind Sie mental bereit für eine erneute Abfrage?
@pause
GOTO setgogo
:Serveroff
@echo.
@echo SERVER ist nicht erreichbar! Oder haben Sie sich vertippt? (j/n)
@echo.
GOTO setjn
:setjn
@echo.
@set/p jn=
:nein
if "%jn%"="n" GOTO spaeter
if NOT "%jn%"="n" GOTO ja
:ja
if "%jn%"="j" GOTO Mental
if NOT "%jn%"="j" GOTO doof
:doof
@echo.
@echo Ist das so schwer?? j oder n!!!
GOTO setjn
:spaeter
@echo.
@echo SERVER ist offline! Schalten Sie den Computer an und versuchen Sie es danach noch einmal.
pause
exit
[/quote]
Der Zugriff auf zwei Dateien funktioniert, aber sobald ich bei der Abfrage,ob ich mich vertippt habe, wenn SERVER offline ist, n eingebe schließt sich die Dos-Box einfach und ich weiß nicht warum. Hoffe ihr versteht, was das Problem ist.
Cheerio
Antwort 1 von pilic
Hi nochmal
ich hab vergessen, dass ich alive.exe als Pinger drauf hab...
Das kleine Prog gibt´s hier:
http://wettberg.home.texas.net/alive.htm
Cheerio
ich hab vergessen, dass ich alive.exe als Pinger drauf hab...
Das kleine Prog gibt´s hier:
http://wettberg.home.texas.net/alive.htm
Cheerio
Antwort 2 von Flupo
Du hast die Sprungmarke doch so gesetzt, dass bei "Nein" zu "später" gesprungen wird:
Das Programm geht damit zum Schluss des Programmes und "exit" schließt die Box.
Gruß Flupo
:nein
if "%jn%"="n" GOTO spaeter
Das Programm geht damit zum Schluss des Programmes und "exit" schließt die Box.
Gruß Flupo
Antwort 3 von disco
Zitat:
Das Programm geht damit zum Schluss des Programmes und "exit" schließt die Box.
Das Programm geht damit zum Schluss des Programmes und "exit" schließt die Box.
vorher steht aber noch ein pause. somit müsste erstmal ne taste gedrückt werden..
Antwort 4 von Flupo
Zitat:
vorher steht aber noch ein pause. somit müsste erstmal ne taste gedrückt werden..
vorher steht aber noch ein pause. somit müsste erstmal ne taste gedrückt werden..
Genau das hab ich mir nach dem Abschicken auch noch gedacht. ;-)
Ich würde zum Testen mal ganz oben "@Echo off" und ganz unten "Exit" auskommentieren.
Es gab zu DOS-Zeiten (ach, war das herrlich als ein Betriebssystem noch auf eine Diskette gepasst hat) auch einen Schalter, mit dem man Batch-Files mit Einzelbestätigung ausführen konnte. Ich komm nur nicht mehr drauf, wie das ging.
Gruß Flupo
PS: @pilic: Für Programmtexte besser den "Code"-Button nutzen.
Antwort 5 von pilic
Hi,
das mit dem Code ist keine schlechte Idee, danke für den Tipp ;-)
Leider weiß ich gerade nicht, was du mit "auskommentieren" meinst. Hab einfach das ganze mal weggelassen, aber das hat auch nichts gebracht.
Cheerio
das mit dem Code ist keine schlechte Idee, danke für den Tipp ;-)
Leider weiß ich gerade nicht, was du mit "auskommentieren" meinst. Hab einfach das ganze mal weggelassen, aber das hat auch nichts gebracht.
Cheerio
Antwort 6 von Flupo
Mit "Auskommentieren" meine ich, die Zeilen unwirksam zu machen. Das geht mit dem Befehl REM am Zeilenanfang oder einfach mit dem Doppelpunkt (so wird der Befehl zur Sprungmarke, die nicht abgearbeitet wird).
Ergebnis müsste eigentlich sein, dass wenigstens die DOS-Box aufbleibt und du sämtliche Bildschirmausgaben siehst.
Starte die Batchdatei doch mal aus einer DOS-Box. Dann müsstest du auch alle Ausgaben sehen können.
Wenn du @echo off am Anfang weglässt, wird jede Befehlszeile vor der Ausführung am Bildschirm gezeigt. Damit lassen sich die Sprünge innerhalb der Datei besser verfolgen.
Gruß Flupo
Ergebnis müsste eigentlich sein, dass wenigstens die DOS-Box aufbleibt und du sämtliche Bildschirmausgaben siehst.
Starte die Batchdatei doch mal aus einer DOS-Box. Dann müsstest du auch alle Ausgaben sehen können.
Wenn du @echo off am Anfang weglässt, wird jede Befehlszeile vor der Ausführung am Bildschirm gezeigt. Damit lassen sich die Sprünge innerhalb der Datei besser verfolgen.
Gruß Flupo
Antwort 7 von pilic
Hi,
okay das mit dem auskommentieren hab ich also richtig verstanden und schon gemacht, aber das hat nichts gebracht. Sobald ich j oder n eintippe schließt sich die Dos-Box mit oder ohne "echo off" und "exit".
So langsam habe ich das Gefühl, dass die beiden Variablen irgendwie nicht "harmonieren". Aber das dürfte doch eigentlich nicht sein. Oder doch?
@Flupo:
Hast du eigentlich die Batch-Datei auf deinem PC ausprobiert, da ich so langsam irgendwie an meinem PC Zweifel habe.
Cheerio
okay das mit dem auskommentieren hab ich also richtig verstanden und schon gemacht, aber das hat nichts gebracht. Sobald ich j oder n eintippe schließt sich die Dos-Box mit oder ohne "echo off" und "exit".
So langsam habe ich das Gefühl, dass die beiden Variablen irgendwie nicht "harmonieren". Aber das dürfte doch eigentlich nicht sein. Oder doch?
@Flupo:
Hast du eigentlich die Batch-Datei auf deinem PC ausprobiert, da ich so langsam irgendwie an meinem PC Zweifel habe.
Cheerio
Antwort 8 von Flupo
Ich konnte bisher nicht testen, da wir auf Arbeit Windows NT haben.
Ich hab jetzt nur leider wenig Zeit.
Ein schneller Test hat aber eine Fehlermeldung gebracht:
Das liegt daran, dass du in dem Bereich das zweite Gleichheitszeichen vergessen hast.
Es muss also richtig heißen:
Kann leider jetzt nicht weiter helfen, da ich gleich weg muss.
Bin Sonntag wieder im Lande.
Viel Erfolg
Flupo
Ich hab jetzt nur leider wenig Zeit.
Ein schneller Test hat aber eine Fehlermeldung gebracht:
Zitat:
n
"="n"" ist syntaktisch an dieser Stelle nicht verarbeitbar."
n
"="n"" ist syntaktisch an dieser Stelle nicht verarbeitbar."
Das liegt daran, dass du in dem Bereich das zweite Gleichheitszeichen vergessen hast.
Es muss also richtig heißen:
:setjn
@echo.
@set/p jn=
:nein
if "%jn%"=="n" GOTO spaeter
if NOT "%jn%"=="n" GOTO ja
:ja
if "%jn%"=="j" GOTO Mental
if NOT "%jn%"=="j" GOTO doof
Kann leider jetzt nicht weiter helfen, da ich gleich weg muss.
Bin Sonntag wieder im Lande.
Viel Erfolg
Flupo
Antwort 9 von pilic
Hi,
du brauchst ja auch gar nicht weiterhelfen. Aber auf die Gleichheitszeichen wäre ich nie im Leben gekommen.
Cheerio
du brauchst ja auch gar nicht weiterhelfen. Aber auf die Gleichheitszeichen wäre ich nie im Leben gekommen.
Cheerio