WinFuture-Forum.de: Problem Bei Batch Mit Errorlevel - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Problem Bei Batch Mit Errorlevel


#1 Mitglied ist offline   Foxhound 

  • Gruppe: aktive Mitglieder
  • Beiträge: 366
  • Beigetreten: 29. November 04
  • Reputation: 0

geschrieben 15. Februar 2005 - 20:45

Hi!

Ich habe, um mir die Installation von Programmen, einen guide geschrieben, der als autorun arbeitet und als eine Art Menü Programme, nach einer Windowsneuinstallation, von einer selbstzusammengestellten CD die *.exe Dateien von Programmen ausführt und gegebenfalls konfiguriert, bzw. Sprachdateien einfügt. In dem Auswahlmenü soll dargestellt werden, was man ausführen möchte und ob ein Programm schon iinstalliert worden ist oder nicht.

Zitat

::Zur verfügung stehende Operationen
:OPERATIONEN
CD %X%:
COLOR 9F
CLS
ECHO*********************************************
ECHO*******************XPconfig*******************
ECHO*********************************************
ECHO.
ECHO DATEIOPERATIONEN:
ECHO -----------------
ECHO.
ECHO 1 - PhotoFiltre installieren
ECHO.
IF %errorfile01%==errorlevel 1 ECHO --  Noch nicht ausgefuehrt
IF %errorfile01%==errorlevel 0 ECHO --  Bereits ausgefuehrt --
ECHO.
ECHO 2 -  Mozilla Firefox installieren
IF %errorfile02%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile02%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 3 - Hijackthis installieren
IF %errorfile03%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile03%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 4 - ResHacker installieren
IF %errorfile04%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile04%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 5 - Windows Dienste sicher konfigurieren
IF %errorfile05%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile05%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 6 - ICQ 5.0 installieren
IF %errorfile06%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile06%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 7 - Windows Media Player installieren
IF %errorfile07%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile07%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 8 - Skype installieren
IF %errorfile08%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile09%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 9 - Free Commander installieren
IF %errorfile09%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile09%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 10 - TVgenial installieren
IF %errorfile10%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile10%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 11 - Mozilla Thunderbird installieren
IF %errorfile11%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile11%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
ECHO.
ECHO 12 - Samurize v 1.6 installieren
IF %errorfile12%==errorlevel 1 ECHO -- Noch nicht ausgefuehrt --
IF %errorfile12%==errorlevel 0 ECHO -- Bereits ausgefuehrt --
SET /P Y=Waehlen Sie zwischen (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (e) um zu beenden oder [c] um den Laufwerksbuchstaben zu korrigieren - Ihre Wahl: %
IF /I "%Y%"=="1" GOTO :FILE01
IF /I "%Y%"=="2" GOTO :FILE02
IF /I "%Y%"=="3" GOTO :FILE03
IF /I "%Y%"=="4" GOTO :FILE04
IF /I "%Y%"=="5" GOTO :FILE05
IF /I "%Y%"=="6" GOTO :FILE06
IF /I "%Y%"=="7" GOTO :FILE07
IF /I "%Y%"=="8" GOTO :FILE08
IF /I "%Y%"=="9" GOTO :FILE09
IF /I "%Y%"=="10" GOTO :FILE10
IF /I "%Y%"=="11" GOTO :FILE11
IF /I "%Y%"=="12" GOTO :FILE12
IF /I "%Y%"=="e" GOTO :EOF
IF /I "%Y%"=="c" GOTO :FEHLERBEHANDLUNG
IF ERRORLEVEL 0  GOTO :FALSE2



Warum funktioniert das mit den errorleveln nicht?

Edit: Achja, nach einer Ausführung einer Option wird folgendes gemacht:
SET %errorfile01%==errorlevel 0

Dieser Beitrag wurde von Foxhound bearbeitet: 16. Februar 2005 - 13:00

0

Anzeige



#2 Mitglied ist offline   Foxhound 

  • Gruppe: aktive Mitglieder
  • Beiträge: 366
  • Beigetreten: 29. November 04
  • Reputation: 0

geschrieben 16. Februar 2005 - 13:01

Kann mir niemand helfen?
0

#3 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 16. Februar 2005 - 13:10

Hier eine kleine Hilfe für der ERRORLEVEL funktioniert. Hier ohne Variable:
dir
if %ERRORLEVEL%==1 goto fehler

:fehler
echo nix gefunden


alles klar?
0

#4 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 16. Februar 2005 - 13:10

Dein Code ist total falsch. Die korrekte Benutzung is

IF ERRORLEVEL 255 DO Befehl1
IF ERRORLEVEL 7 DO Befehl2
IF ERRORLEVEL 0 DO Befehl3

Beachte daß die Errorlevel nur in absteigender Reihenfolge ausgewertet werden dürfen.
%errorlevel% ohne ein vorheriges Poll des Errorlevels auszuwerten ist sowieso sinnlos.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#5 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 16. Februar 2005 - 13:16

Zitat (Rika: 16.02.2005, 13:10)

Dein Code ist total falsch. Die korrekte Benutzung is

IF ERRORLEVEL 255 DO Befehl1
IF ERRORLEVEL 7 DO Befehl2
IF ERRORLEVEL 0 DO Befehl3


stimmt, oder so...
0

#6 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 16. Februar 2005 - 13:42

Nicht "oder so", sondern nur so. Errorlevel ist keine simple Variable, sondern ein Befehl, der den letzten von Errorlevel bewertbaren Fehler hernimmt, gegen den Wert abgleicht und das Ergebnis des Vergleichs zurückliefert. Es benutzt intern einen maximalen Fehlerwert, gegen den man vergleicht, und der mit jedem gültigen Vergleich abnimmt. Dieser Wert stellt er in %errorlevel% zur Verfügung.

Wenn du also

//etwas war errorlevel 7 generiert
if errorlevel 6 goto a
if errorlevel 7 goto b
goto c
:c
//etwas war errorlevel 7 generiert
if errorlevel 8 goto a
if %errorlevel%==7 goto :b
echo "Mist."
:a
:b

machst, dann kommt da tatsächlich "Mist." raus.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#7 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 16. Februar 2005 - 13:49

da muss ich jetzt aber protestieren.
Guck dir mal diesen Code an, wenn
dir
jetzt nichts findet und als errorlevel 1 ausgibt. mist wird NICHT ausgegeben!
@echo off
dir /B dasdasd
if %ERRORLEVEL%==1 goto fehler
echo mist
goto end

:fehler
echo doch kein mist

:end

0

#8 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 16. Februar 2005 - 13:56

Autsch. Hat Microsoft diese Bugs also immernoch nicht gefixt?
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#9 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 16. Februar 2005 - 13:59

Warum soll das ein Bug sein?
0

#10 Mitglied ist offline   Foxhound 

  • Gruppe: aktive Mitglieder
  • Beiträge: 366
  • Beigetreten: 29. November 04
  • Reputation: 0

geschrieben 16. Februar 2005 - 14:08

Zitat

Dein Code ist total falsch. Die korrekte Benutzung is

IF ERRORLEVEL 255 DO Befehl1
IF ERRORLEVEL 7 DO Befehl2
IF ERRORLEVEL 0 DO Befehl3


Beachte daß die Errorlevel nur in absteigender Reihenfolge ausgewertet werden dürfen.
%errorlevel% ohne ein vorheriges Poll des Errorlevels auszuwerten ist sowieso sinnlos.


So kann das aber gar nicht funktionieren...
Dann wäre ja jede Operation (errorfile01, errorfile02...), bei diesem einem bestimmten errorlevel, als ausgeführt angegeben(ich habe vor den Status jeder Operation, welche ich als errorfile01, errorfile02... bezeichnet habe mit dem befehl echo (und nicht goto) darzustellen)

Dieser Beitrag wurde von Foxhound bearbeitet: 16. Februar 2005 - 14:12

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0