Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Retry Zähler im DOS-Batch

8 views
Skip to first unread message

Ulrich F. Heidenreich

unread,
Jan 2, 2017, 6:32:27 AM1/2/17
to
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

unread,
Jan 2, 2017, 10:41:04 AM1/2/17
to
Ulrich F. Heidenreich schrieb am 02.01.2017 um 12:16:

> 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

unread,
Jan 2, 2017, 11:42:41 AM1/2/17
to
Claus Reibenstein in <news:ecvakd...@mid.individual.net>:

>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

unread,
Jan 3, 2017, 5:27:53 AM1/3/17
to
Am 02.01.2017 um 17:25 schrieb 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
> |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 #-)

Numerisch geht in WinNT-Batch auch.

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


Stefan

Ulrich F. Heidenreich

unread,
Jan 3, 2017, 6:22:48 AM1/3/17
to
Stefan Reuther in <news:o4fvli...@stefan.msgid.phost.de>:

>Am 02.01.2017 um 17:25 schrieb 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

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

unread,
Jan 3, 2017, 7:37:29 AM1/3/17
to
Ulrich F. Heidenreich schrieb am 03.01.2017 um 12:02:

> Stefan Reuther in <news:o4fvli...@stefan.msgid.phost.de>:
>
>> Am 02.01.2017 um 17:25 schrieb 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.

> Also lieber
>
> if %retry%y == xxxxxy goto skip

Oder

if "%retry%" == "xxxxx" goto skip

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

unread,
Jan 3, 2017, 9:12:29 AM1/3/17
to
Claus Reibenstein in <news:ed1k87...@mid.individual.net>:

>Ulrich F. Heidenreich schrieb am 03.01.2017 um 12:02:
>
>>> Am 02.01.2017 um 17:25 schrieb 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?

>> Also lieber
>>
>> if %retry%y == xxxxxy goto skip
>
>Oder
>
>if "%retry%" == "xxxxx" goto skip

Gänsefüße gehen auch? Man lernt immer noch dazu …

>> 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.
0 new messages