Discussion:
Retry Zähler im DOS-Batch
(zu alt für eine Antwort)
Ulrich F. Heidenreich
2017-01-02 11:16:36 UTC
Permalink
Moin!

Womer grad bei DOS-Batches sind: Kennt hier jemand eine Möglichkeit,
einen Retry-Zähler (hier zum Beispiel 5) etwas eleganter zu realisieren
als

tuwas.exe
if errorlevel == 1 goto retry1
goto success
:retry 1
tuwas.exe
if errorlevel == 1 goto retry2
goto success
:retry2
tuwas.exe
if errorlevel == 1 goto retry3
goto success
:retry3
tuwas.exe
if errorlevel == 1 goto retry4
goto success
:retry4
tuwas.exe
if errorlevel == 1 goto retry5
goto success
:retry5
tuwas.exe
if errorlevel == 1 exit
:sucess
tunochwas.exe

TIA,
Ulrich
--
Ja?
Claus Reibenstein
2017-01-02 15:41:02 UTC
Permalink
Post by Ulrich F. Heidenreich
Womer grad bei DOS-Batches sind: Kennt hier jemand eine Möglichkeit,
einen Retry-Zähler (hier zum Beispiel 5) etwas eleganter zu
realisieren als
tuwas.exe
if errorlevel == 1 goto retry1
goto success
:retry 1
tuwas.exe
if errorlevel == 1 goto retry2
[...]
if errorlevel == 1 exit
:sucess
tunochwas.exe
Etwa so (ungetestet):

set fehler=
:retry
tuwas.exe
if not errorlevel 1 goto :success
if %fehler% == xxxxx exit
set fehler=x%fehler%
goto retry
:success
tunochwas.exe

Bei 5 ist das sicher elegant genug. Wenn es allerdings deutlich mehr
werden, dann ...

Gruß
Claus
Ulrich F. Heidenreich
2017-01-02 16:25:34 UTC
Permalink
Post by Claus Reibenstein
set fehler=
:retry
tuwas.exe
if not errorlevel 1 goto :success
if %fehler% == xxxxx exit
set fehler=x%fehler%
goto retry
:success
tunochwas.exe
Bei 5 ist das sicher elegant genug. Wenn es allerdings deutlich mehr
werden, dann ...
… gäbe es halt ein par "x"e mehr. Braucht aber nicht. Ich möchte einfach
nur verhindern, daß - konkret -

|:wait4up
|wake 4C-72-B9-7C-9F-A9 192.168.200.255
|choice /T:J,30 > nul:
|if not exist \\enzian2\525-C\iam.up goto wait4up

in einer Endlosschleife versackt, falls \\enzian2 seinen Brsch nicht
hoch bekommt.

Auch ungetestet:

|set retry=
|:wait4up
|if %retry% == xxxxx goto skip
|set retry=x%retry%
|wake 4C-72-B9-7C-9F-A9 192.168.200.255
|choice /T:J,30 > nul:
|if not exist \\enzian2\525-C\iam.up goto wait4up
|:skip

Schaut gut aus, Dein Ansatz. Da habe ich wohl zu "numerisch" gedacht #-)

CU!
Ulrich
--
In 11 Monaten und 23 Tagen ist Weihnachten.
Programme, soviel ihr wollt; Preise, die ihr selbst bestimmt:
Schaut einfach mal auf ftp://warez.invalid.de rein
Stellt euch vor, es ist Montag und keiner geht hin!
Stefan Reuther
2017-01-03 09:50:26 UTC
Permalink
Post by Ulrich F. Heidenreich
|set retry=
|:wait4up
|if %retry% == xxxxx goto skip
|set retry=x%retry%
|wake 4C-72-B9-7C-9F-A9 192.168.200.255
|if not exist \\enzian2\525-C\iam.up goto wait4up
|:skip
Schaut gut aus, Dein Ansatz. Da habe ich wohl zu "numerisch" gedacht #-)
Numerisch geht in WinNT-Batch auch.

set /a a=a+1
if %a% leq 5 goto :again


Stefan
Ulrich F. Heidenreich
2017-01-03 11:02:56 UTC
Permalink
Post by Stefan Reuther
Post by Ulrich F. Heidenreich
|set retry=
|:wait4up
|if %retry% == xxxxx goto skip
Da steckt BTW ein immer gerne genommener Fehler drin. Solange retry noch
leer (also im ersten Anlauf) ist, gibt es einen Sntaxfehler. Also lieber

if %retry%y == xxxxxy goto skip
Post by Stefan Reuther
Post by Ulrich F. Heidenreich
Schaut gut aus, Dein Ansatz. Da habe ich wohl zu "numerisch" gedacht #-)
Numerisch geht in WinNT-Batch auch.
Wurde nicht gerade erst ein anderer Poster zurechtgewiesen^W
darauf aufmerksam gemacht, daß es hier um MSDOS geht?

CU!
Ulrich
--
In 11 Monaten und 22 Tagen ist Weihnachten.
Programme, soviel ihr wollt; Preise, die ihr selbst bestimmt:
Schaut einfach mal auf ftp://warez.invalid.de rein
Stellt euch vor, es ist Dienstag und keiner geht hin!
Claus Reibenstein
2017-01-03 12:37:27 UTC
Permalink
Post by Ulrich F. Heidenreich
Post by Stefan Reuther
Post by Ulrich F. Heidenreich
|if %retry% == xxxxx goto skip
Da steckt BTW ein immer gerne genommener Fehler drin. Solange retry
noch leer (also im ersten Anlauf) ist, gibt es einen Sntaxfehler.
Stimmt.
Post by Ulrich F. Heidenreich
Also lieber
if %retry%y == xxxxxy goto skip
Oder

if "%retry%" == "xxxxx" goto skip
Post by Ulrich F. Heidenreich
Post by Stefan Reuther
Numerisch geht in WinNT-Batch auch.
Wurde nicht gerade erst ein anderer Poster zurechtgewiesen^W
darauf aufmerksam gemacht, daß es hier um MSDOS geht?
Manche lernen es halt nicht. Oder sie ignorieren solche Hinweise.

Dass es unter den moderneren, eigenständigen Windows-Betriebssystem auch
anders geht, steht außer Frage, und das weiß ich als Entwickler auch.
Aber hier ist eben nun mal DOS, also werden die DOS-Möglichkeiten
aufgezeigt.

Gruß
Claus
Ulrich F. Heidenreich
2017-01-03 14:01:22 UTC
Permalink
Post by Claus Reibenstein
Post by Ulrich F. Heidenreich
Post by Ulrich F. Heidenreich
|if %retry% == xxxxx goto skip
Da steckt BTW ein immer gerne genommener Fehler drin. Solange retry
noch leer (also im ersten Anlauf) ist, gibt es einen Sntaxfehler.
Stimmt.
Hier aber eigentlich nur ein Schönheitsfehler, oder?
Post by Claus Reibenstein
Post by Ulrich F. Heidenreich
Also lieber
if %retry%y == xxxxxy goto skip
Oder
if "%retry%" == "xxxxx" goto skip
Gänsefüße gehen auch? Man lernt immer noch dazu …
Post by Claus Reibenstein
Post by Ulrich F. Heidenreich
Wurde nicht gerade erst ein anderer Poster zurechtgewiesen^W
darauf aufmerksam gemacht, daß es hier um MSDOS geht?
Manche lernen es halt nicht. Oder sie ignorieren solche Hinweise.
Ach, lass mal. So bierernst meinte ich es auch wieder nicht. Stell
Dir mal vor, er hätte in einer Windowsgruppe gefragt #-)

Nichtsdestowenigertrotz nutzt mir eine auf NT oder höher laufende
Lösung rein gar nichts, weil hier noch DOS (Als mein Win95-Unterbau)
im Produktivbetrieb ist. Und das Ding möchte ich aus reiner Dick-
schädeligkeit so lange wie möglich am Leben halten.

CU!
Ulrich
--
In 11 Monaten und 22 Tagen ist Weihnachten.
Programme, soviel ihr wollt; Preise, die ihr selbst bestimmt:
Schaut einfach mal auf ftp://warez.invalid.de rein
Stellt euch vor, es ist Dienstag und keiner geht hin!
Lesen Sie weiter auf narkive:
Loading...