frontendler
Goto Top

Batch Mehrfachauswahl + Text eingabe in Mehrfachauswahl und Loop

Hallöchen, ich hänge gerade etwas fest und hoffe mir kann jemand mit der Umsetzung helfen.
Ich bin fast fertig, nur ich komme nicht zum letzten schritt.
Heißt:
Die Mehrfachauswahl ist fertig, nun möchte ich aber einen Eintrag in der Mehrfachauswahl, wo ich erneut keinen fertigen Code habe, sondern mir etwas eintragen kann.
Das schwierige dabei ist, jede Option ist ein loop und bei der letzten Option (a) = andere soll ein eigener Name einfügt werden können, also per Set /p etc.. aber ich hapere mit der Umsetzung mit dem Code, da der Befehl ja auch noch inklusive dem loop eintragen werden muss.
Wie man sieht habe ich es probiert, aber irgendwie will das nicht :S
Derzeit meine Batch:

Habe es nun doch hinbekommen, ich danke trotzdem allen face-smile
Lösung von mir selber

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"  
set "DD=%dt:~6,2%" & set "MM=%dt:~4,2%" & set "YYYY=%dt:~0,4%" & set "YY=%dt:~2,2%"  
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"  
set "datestamp=%DD%%MM%%YYYY%"  
set "timestamp=%HH%%Min%%Sec%"  
set "fullstamp=%DD%-%MM%-%YYYY%__%HH%-%Min%-%Sec%"  
echo ###############################
echo ####                       ####
echo ####   Channel auswahl     ####
echo.####                       ####
echo ####      1 = Name     ####
echo ####      2 = Name      ####
echo ####      3 = Name      ####
echo ####      4 = Name     ####
echo ####      5 = Name    ####
echo ####      6 = Name       ####
echo ####      a = Andere       ####
echo ####                       ####
echo ###############################
echo.
set TwitchName=0
set /p TwitchName="Twitch Channel auswahl: "  
if %TwitchName%==1 goto :TwitchName1
if %TwitchName%==2 goto :TwitchName2
if %TwitchName%==3 goto :TwitchName3
if %TwitchName%==4 goto :TwitchName4
if %TwitchName%==5 goto :TwitchName5
if %TwitchName%==6 goto :TwitchName6
if %TwitchName%==a set /p N="Channel: " & goto :TwitchName7  

:TwitchName1
Your Code

:TwitchName2
Your Code

:TwitchName3
Your Code

:TwitchName4
Your Code

:TwitchName5
Your Code

:TwitchName6
Your Code

:TwitchName7
@echo off
Your Code und natürlich die %N% variablen Ausgabe nicht vergessen, dann nur noch den erneuten Abruf als Loop und fertig sind wir.
So funktioniert es bei mir zumindest :D
timeout /t 10
 goto TwitchName7

Ich bedanke mich für jede Hilfe und hoffe auf eine schnelle Lösung.
Dankee face-smile

Content-ID: 4693506154

Url: https://administrator.de/contentid/4693506154

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

4400667902
4400667902 20.11.2022 aktualisiert um 09:52:09 Uhr
Goto Top
Wenn du choice nimmst entfallen die ganzen if Abfragen und beschränken sich dann auf ne simple goto Anweisung 😉 ...
choice /c 1234567a /m "Ihre Auswahl"  
goto TwitchName%errorlevel%
FrontEndler
FrontEndler 21.11.2022 um 02:46:42 Uhr
Goto Top
Zitat von @4400667902:

Wenn du choice nimmst entfallen die ganzen if Abfragen und beschränken sich dann auf ne simple goto Anweisung 😉 ...
choice /c 1234567a /m "Ihre Auswahl"  
goto TwitchName%errorlevel%

Danke, habe ich mal probiert, ist natürlich eine cleanere Lösung, allerdings hast du etwas vergessen :D.
Schau dir mal die "A" abfrage an, diese muss erst neu gesetzt werden, weiß gerade nicht wie du die da unterbringen willst, ohne das dies immer wieder erneut abgefragt wird ?
Weil die Option "A" wird ja erst manuell gesetzt um eine andere Eingabe selber eingeben zu können, was so jetzt nicht mehr möglich ist.
Wenn du dafür eine Lösung hast, wäre es perfekt^^
4400667902
4400667902 21.11.2022 aktualisiert um 08:06:19 Uhr
Goto Top
Zitat von @FrontEndler:

Schau dir mal die "A" abfrage an, diese muss erst neu gesetzt werden,
?? Ist doch das gleiche wie die anderen auch sehe da keinen Unterschied oder da fehlt ein Hinweis von deiner Seite,
Wenn du die zusätzliche Abfrage meinst die kannst du ja in der Sprungmarke unterbringen.... Sehe da ehrlich gesagt kein Problem ...
Aber mal ehrlich, sowas macht doch heute keiner mehr mit Batch, außer man hat einen sadomassochistischen 80er Fetisch.... 🙈
Uhli90
Uhli90 21.11.2022 aktualisiert um 14:22:47 Uhr
Goto Top
Noch eine kleine Anmerkung am Rande: Möchtest du, dass nach TwitchName1 dann auch TwitchName2,3,4,.... ausgeführt wird? Ansonsten solltest du noch jedes GOTO noch mit einem GOTO beenden was dich aus deinem GOTO-Schleifenkonstrukt hinaus bringt. Auch macht dein Timeout für mich keinen Sinn, es sei denn du möchtest das Skript künstlich verzögern.

So in etwa:
@echo off

:SkriptStart

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"  
set "DD=%dt:~6,2%" & set "MM=%dt:~4,2%" & set "YYYY=%dt:~0,4%" & set "YY=%dt:~2,2%"  
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"  
set "datestamp=%DD%%MM%%YYYY%"  
set "timestamp=%HH%%Min%%Sec%"  
set "fullstamp=%DD%-%MM%-%YYYY%__%HH%-%Min%-%Sec%"  
echo ###############################
echo ####                       ####
echo ####   Channel auswahl     ####
echo.####                       ####
echo ####      1 = Name     ####
echo ####      2 = Name      ####
echo ####      3 = Name      ####
echo ####      4 = Name     ####
echo ####      5 = Name    ####
echo ####      6 = Name       ####
echo ####      a = Andere       ####
echo ####                       ####
echo ###############################
echo.
set TwitchName=0
set /p TwitchName="Twitch Channel auswahl: "  
if %TwitchName%==1 goto :TwitchName1
if %TwitchName%==2 goto :TwitchName2
if %TwitchName%==3 goto :TwitchName3
if %TwitchName%==4 goto :TwitchName4
if %TwitchName%==5 goto :TwitchName5
if %TwitchName%==6 goto :TwitchName6
if %TwitchName%==a set /p N="Channel: " & goto :TwitchName7  

:TwitchName1
Your Code
goto SkriptEnde

:TwitchName2
Your Code
goto SkriptEnde

:TwitchName3
Your Code
goto SkriptEnde

:TwitchName4
Your Code
goto SkriptEnde

:TwitchName5
Your Code
goto SkriptEnde

:TwitchName6
Your Code
goto SkriptEnde

:TwitchName7
goto TwitchName7


:SkriptEnde
set /p Nochmal="Möchten Sie das Skript erneut ausführen (y/n)?: "  
if %Nochmal%==y goto SkriptStart
echo Skript wurde beendet.
pause
FrontEndler
FrontEndler 22.11.2022 um 10:06:48 Uhr
Goto Top
Zitat von @4400667902:

Zitat von @FrontEndler:

Schau dir mal die "A" abfrage an, diese muss erst neu gesetzt werden,
?? Ist doch das gleiche wie die anderen auch sehe da keinen Unterschied oder da fehlt ein Hinweis von deiner Seite,
Wenn du die zusätzliche Abfrage meinst die kannst du ja in der Sprungmarke unterbringen.... Sehe da ehrlich gesagt kein Problem ...
Aber mal ehrlich, sowas macht doch heute keiner mehr mit Batch, außer man hat einen sadomassochistischen 80er Fetisch.... 🙈

Also was du mit Sprungmarke meinst verstehe ich, nur ich bin gerade verwirrt wie du es da unter bringen willst, da ich es gerade nicht sehe. Vllt auch blind vor Müdigkeit aber gerade o.O?
Ich antworte mal den Kollegen hier drunter mit dem Code, vllt beantwortet es etwas offenes.
Oder kann uns gerade helfen wie jeder von uns beiden etwas meint :D
Und ja, es ist 80er :D, nur da ich nicht programmieren kann und gerade keine andere Möglichkeit zur Hand habe, blieb mir nur das. Es hilft mir auch mehr, denn wenn ich auf Arbeit bin kann ich schlecht mein Handy nehmen mich mit dem PC Verbinden und ständig erstmal alles selber schreiben, daher habe ich es per Batch gemacht :D.


Zitat von @Uhli90:

Noch eine kleine Anmerkung am Rande: Möchtest du, dass nach TwitchName1 dann auch TwitchName2,3,4,.... ausgeführt wird? Ansonsten solltest du noch jedes GOTO noch mit einem GOTO beenden was dich aus deinem GOTO-Schleifenkonstrukt hinaus bringt. Auch macht dein Timeout für mich keinen Sinn, es sei denn du möchtest das Skript künstlich verzögern.

So in etwa:
@echo off

:SkriptStart

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"  
set "DD=%dt:~6,2%" & set "MM=%dt:~4,2%" & set "YYYY=%dt:~0,4%" & set "YY=%dt:~2,2%"  
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"  
set "datestamp=%DD%%MM%%YYYY%"  
set "timestamp=%HH%%Min%%Sec%"  
set "fullstamp=%DD%-%MM%-%YYYY%__%HH%-%Min%-%Sec%"  
echo ###############################
echo ####                       ####
echo ####   Channel auswahl     ####
echo.####                       ####
echo ####      1 = Name     ####
echo ####      2 = Name      ####
echo ####      3 = Name      ####
echo ####      4 = Name     ####
echo ####      5 = Name    ####
echo ####      6 = Name       ####
echo ####      a = Andere       ####
echo ####                       ####
echo ###############################
echo.
set TwitchName=0
set /p TwitchName="Twitch Channel auswahl: "  
if %TwitchName%==1 goto :TwitchName1
if %TwitchName%==2 goto :TwitchName2
if %TwitchName%==3 goto :TwitchName3
if %TwitchName%==4 goto :TwitchName4
if %TwitchName%==5 goto :TwitchName5
if %TwitchName%==6 goto :TwitchName6
if %TwitchName%==a set /p N="Channel: " & goto :TwitchName7  

:TwitchName1
Your Code
goto SkriptEnde

:TwitchName2
Your Code
goto SkriptEnde

:TwitchName3
Your Code
goto SkriptEnde

:TwitchName4
Your Code
goto SkriptEnde

:TwitchName5
Your Code
goto SkriptEnde

:TwitchName6
Your Code
goto SkriptEnde

:TwitchName7
goto TwitchName7


:SkriptEnde
set /p Nochmal="Möchten Sie das Skript erneut ausführen (y/n)?: "  
if %Nochmal%==y goto SkriptStart
echo Skript wurde beendet.
pause

Hi, danke dir auch für deine Antwort.
Nein, Jede Variable ist ein loop und wird einmal und dann auch nur noch durchgängig abgerufen.
Das der Timeout für dich keinen Sinn macht, verstehe ich, daher poste ich hier mal meine Fertige Batch, nur mit geänderten Namen. Ich denke das bringt mehr Aufschluss.
Streamlink -o ist output shortcut - Speicherort und Speichername - Twitchlink channel u Ad cutter - Echo Ausgabe Benachrichtigung.
Heißt, dauerhaft wird je nach Wahl der ausgewählte Channel abgefragt ob dieser Live ist, falls nicht, geht er in den Timeout und beachtet das hinter Streamlink gar nicht mehr - Loop fängt an.
Falls die Person Online ist, fängt er an mit Ad Cutting und Aufnahme. Sobald der Channel offline geht, geht er in den Echo, sagt das Recorded wurde und fängt dann wieder von vorne an - Ebenfalls Loop.

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"  
set "DD=%dt:~6,2%" & set "MM=%dt:~4,2%" & set "YYYY=%dt:~0,4%" & set "YY=%dt:~2,2%"  
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"  
set "datestamp=%DD%%MM%%YYYY%"  
set "timestamp=%HH%%Min%%Sec%"  
set "fullstamp=%DD%-%MM%-%YYYY%__%HH%-%Min%-%Sec%"  

echo ##############################
echo ####                      ####
echo ####   \033[95mChannel auswahl    \033[97m#### | xcmdcolor.exe
echo.####                      ####
echo ####    1 = \033[95mNAMEN      \033[97m#### | xcmdcolor.exe
echo ####    2 = \033[35mNAMEN       \033[97m#### | xcmdcolor.exe
echo ####    3 = \033[35mNAMEN       \033[97m#### | xcmdcolor.exe
echo ####    4 = \033[35mNAMEN      \033[97m#### | xcmdcolor.exe
echo ####    5 = \033[37mNAMEN     \033[97m#### | xcmdcolor.exe
echo ####    6 = \033[35mNAMEN        \033[97m#### | xcmdcolor.exe
echo ####    7 = \033[90mNAMEN      \033[97m#### | xcmdcolor.exe
echo ####    a = Andere        \033[97m#### | xcmdcolor.exe
echo ####                      ####
echo ##############################
echo.
set TwitchName=0
set /p TwitchName="Twitch Channel auswahl: "  
if %TwitchName%==1 goto :TwitchName1
if %TwitchName%==2 goto :TwitchName2
if %TwitchName%==3 goto :TwitchName3
if %TwitchName%==4 goto :TwitchName4
if %TwitchName%==5 goto :TwitchName5
if %TwitchName%==6 goto :TwitchName6
if %TwitchName%==7 goto :TwitchName7
if %TwitchName%==a set /p N="Channel: " & goto :TwitchName8  

:TwitchName1
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/NAMEN best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName1

:TwitchName2
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/NAMEN best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName2

:TwitchName3
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/NAMEN best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName3

:TwitchName4
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/NAMEN best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName4

:TwitchName5
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/NAMEN best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName5

:TwitchName6
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/NAMEN best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName6

:TwitchName7
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/NAMEN best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName7

:TwitchName8
@echo off
 streamlink -o "C:\Users\m-say\Documents\TOOLS\CMD\xREC\{author}__[%fullstamp%]__{title}__{category}.mp4" twitch.tv/%N% best --twitch-disable-ads && @echo & echo: & echo: & echo ################## & echo # Recording DONE # & echo ##################  
timeout /t 10
 goto TwitchName8