Wartezeit bei "set p" begrenzen?
Moinsen,
ich hab da irgendwie ein Brett vor dem Kopp:
In einem Script habe ich eine Eingabe "set /p..." und möchte, dass nach bsp. 10min die Eingabe verworfen wird und das script ohne die Eingabe weiterläuft. (Zeile 25)
HIntergrund:
Jemand loggt sich mit seinem Namen im Script ein und es wird auf eine Eingabe gewartet. Erfolgt die innerhalb von 10min. nicht, soll das Script wieder von vorne beginnen und auf einen Login warten.
Hinter dem Hintergrund:
Bin jetzt nicht der begabte Scripter; bitte habt Nachsicht.^^
ich hab da irgendwie ein Brett vor dem Kopp:
In einem Script habe ich eine Eingabe "set /p..." und möchte, dass nach bsp. 10min die Eingabe verworfen wird und das script ohne die Eingabe weiterläuft. (Zeile 25)
HIntergrund:
Jemand loggt sich mit seinem Namen im Script ein und es wird auf eine Eingabe gewartet. Erfolgt die innerhalb von 10min. nicht, soll das Script wieder von vorne beginnen und auf einen Login warten.
Hinter dem Hintergrund:
Bin jetzt nicht der begabte Scripter; bitte habt Nachsicht.^^
:anfang
title=Etikettendruck
@echo off
setlocal enabledelayedexpansion
cls & color F8 & echo. & set user=
::::::::::::::::::::::: user-login :::::::::::::::::::::
echo bitte einloggen: & echo. & set /p user=%user%
for /f "delims=" %%a in (%~dp0\user.txt) do (
if "!user!"=="%%a" (
set "user-eingeloggt=!user!"
goto ean
)
)
echo. & echo Benutzer "%user%" nicht bekannt & echo.
ping -n 3 localhost> nul
set user=
goto anfang
:ean
cls & color F8 & echo.
set ean= & set len= & set anzahl= & set charge=
cls & echo. & echo Hallo "%user-eingeloggt%". Schoen, dass du da bist. ^:^)
echo (ausloggen mit deinem Barcode)
:::::::::::::::::: EAN scannen und auf 13 Stellen pruefen oder logout::::::::::::::::
echo. & echo bitte EAN scannen:
set /p ean=%ean%
:Loop
if "!ean!"=="!user-eingeloggt!" (
set "!user-eingeloggt!="
set "!user!="
cls
goto anfang
)
if "!ean:~%len%!" neq "" set /a len+=1 & goto Loop
if not %len%==13 (For /L %%i in (1,1,2) do echo ) & color 4f & ping -n 3 localhost>nul & goto ean
::::::::::::::::::::: Charge eingeben und Wert pruefen ::::::::::::::::::::::::::::::
:loopcharge
echo. & set charge= & color F8
echo Charge:
set /p charge=%charge%
for /L %%x in (1,1,20) do ( if "!charge:~%%x!"=="" set len=%%x & goto Result )
:Result
if not %len%==8 (For /L %%i in (1,1,2) do echo ) & color 4f & ping -n 3 localhost>nul & goto loopcharge
::::::::::::::::::::: Anzahl eingeben und max. Wert pruefen ::::::::::::::::::::::::::::::
:loopanzahl
echo. & echo Anzahl der Etiketten:
set anzahl= & set /p anzahl=%anzahl%
if !anzahl! GTR 100 goto loopanzahl
::::::::::::::::::: Daten in Datei schreiben :::::::::::::::::::::
echo %ean%;%charge%;%anzahl%;%date:~0%;%time:~0,8%;!user-eingeloggt!;>>"%~dp0\daten\%date:~0%-charge.csv"
echo %ean%;%charge%;%anzahl%;%date:~0%;%time:~0,8%;!user-eingeloggt!;>"%~dp0\tmp.txt"
@echo
color 2a
ping -n 2 localhost> nul
start "" "%~dp0\autoit.exe"
goto ean
exit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 511145
Url: https://administrator.de/contentid/511145
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
10 Kommentare
Neuester Kommentar
heißt ja auch choice
Dein "Problem" bekommst du meines Wissens nach nur mit externer Software in den Griff. Ich verstehe allerdings nicht, warum du dich da mit Batch quälst. Die PowerShell ist schon erfunden.
Gruß
Dein "Problem" bekommst du meines Wissens nach nur mit externer Software in den Griff. Ich verstehe allerdings nicht, warum du dich da mit Batch quälst. Die PowerShell ist schon erfunden.
Gruß
Zitat von @nocheinnoobmehr:
/? bringt mich aber auch nicht viel weiter, da die Eingabe nicht ein einzelnes Zeichen ist, sondern eine 13-stellige Zahl ausm Barcodescanner.
Doch bringt es dich. Der Benutzer muss erst im choice Teil manuell bestätigen daß er eine Eingabe tätigen soll (j/n) erst dann fragst du nach der Nummer mit der /p , bestätigt er die Abfrage nicht mit j geht das Skript nach dem festgelegten Timeout automatisch dorthin wo du es haben willst, fertig./? bringt mich aber auch nicht viel weiter, da die Eingabe nicht ein einzelnes Zeichen ist, sondern eine 13-stellige Zahl ausm Barcodescanner.
Dann ist Batch die falsche Wahl, bau dir den GUI mit PS oder Autoit wenn das sowieso schon im Einsatz ist!
Wie man unschwer erkennen kann, ist es ein Tool in der Produktion
Kopfschüttel.
Moin,
Wohl eher seit Jahrzehnten. Schließlich gibt es die PS seit 2006. Aber genau wegen KISS solltest Du sowas mit der PS realisieren und nicht mit der alten Batchsprache. Ich könnte darauf wetten, dass man diesen Spaghetticode mit goto und den ganzen Krücken in der PS auf vielleicht zehn Zeilen reduzieren kann. Das ist dann besser lesbar, weniger fehleranfällig, schneller und leichter zu warten.
my 2 cents
Erik
Wohl eher seit Jahrzehnten. Schließlich gibt es die PS seit 2006. Aber genau wegen KISS solltest Du sowas mit der PS realisieren und nicht mit der alten Batchsprache. Ich könnte darauf wetten, dass man diesen Spaghetticode mit goto und den ganzen Krücken in der PS auf vielleicht zehn Zeilen reduzieren kann. Das ist dann besser lesbar, weniger fehleranfällig, schneller und leichter zu warten.
my 2 cents
Erik