Supportnet Computer
Planet of Tech

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

Antwort 2 von Flupo

Du hast die Sprungmarke doch so gesetzt, dass bei "Nein" zu "später" gesprungen wird:

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


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


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

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

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: