shutdown über batch datei und cls kurzzeitig auser kraft setzen
also ich habe eine batch datei mit mehreren auswahl möglichkeiten damit das menü immer klar aussieht und nicht von befehlen überschwemmt wir benutze ich den befehl CLS
und ich wollte es nicht über SHUTDOWN -i machen wäre ja zu einfach *g*
ich möchte jetzt in die batch datei einen shutdown befehl einbinden
if %AuswahlEingabe% equ h goto Herunterfahrer
:Herunterfahrer
echo Bitte die Sekunden bis zum Herunterfahren eingeben! (1h=3600sek)
goto shutdown
:shutdown
shutdown -s -t <-- soll frei wählbar sein
so ich möchte nun den satz hinter echo sichtbar haben leider verschwindet er gleich wieder und springt ja zu shutdown
des weiteren möchte ich die möglichkeit haben eine zeit manuell einzugeben.
muß man da ernsthaft für jede sekunde ein weiteres goto shutdown zu sekunde so und so machen oder gibt es andere möglichkeiten
gibt es denn die möglichkeit die schrift einer batch datei zu verändern wie zum beispiel dick dünn unterstrichen oder vieleicht sogar farbe???
und ich wollte es nicht über SHUTDOWN -i machen wäre ja zu einfach *g*
ich möchte jetzt in die batch datei einen shutdown befehl einbinden
if %AuswahlEingabe% equ h goto Herunterfahrer
:Herunterfahrer
echo Bitte die Sekunden bis zum Herunterfahren eingeben! (1h=3600sek)
goto shutdown
:shutdown
shutdown -s -t <-- soll frei wählbar sein
so ich möchte nun den satz hinter echo sichtbar haben leider verschwindet er gleich wieder und springt ja zu shutdown
des weiteren möchte ich die möglichkeit haben eine zeit manuell einzugeben.
muß man da ernsthaft für jede sekunde ein weiteres goto shutdown zu sekunde so und so machen oder gibt es andere möglichkeiten
gibt es denn die möglichkeit die schrift einer batch datei zu verändern wie zum beispiel dick dünn unterstrichen oder vieleicht sogar farbe???
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 13847
Url: https://administrator.de/contentid/13847
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
9 Kommentare
Neuester Kommentar
Also ich kann dir nicht alles beantworten, aber ersteinmal zur Schrift: Die kannst du leider in keinster weise verändern.
Der Text bleibt nur kurz stehen wenn du ne pause hinmachst.
also
:Herunterfahrer
echo Bitte die Sekunden bis zum Herunterfahren eingeben! (1h=3600sek)
pause
goto shutdown
dann wirst du aber aufgefordert einmal zu klicken um fortzufahren.
Das mit der zeit weiß ich nicht :/ sry....
Mit freundlichem Gruß
David Rosehnal
Der Text bleibt nur kurz stehen wenn du ne pause hinmachst.
also
:Herunterfahrer
echo Bitte die Sekunden bis zum Herunterfahren eingeben! (1h=3600sek)
pause
goto shutdown
dann wirst du aber aufgefordert einmal zu klicken um fortzufahren.
Das mit der zeit weiß ich nicht :/ sry....
Mit freundlichem Gruß
David Rosehnal
Moin L4a-Thompson,
Der Set-Befehl könnte helfen - schau mal mit "Set /?" am Dos-Prompt.
in dem Batch...
...
:: Default setzen für Shutdown-Time 300Sec/5Min...
Set STime=300
Menu anzeigen etc...
if %AuswahlEingabe% equ h goto Herunterfahrer
:Herunterfahrer
Set /P STime="Bitte die Sekunden bis zum Herunterfahren eingeben! (1h=3600sek) :"
::--- goto shutdown brauchst du nicht, ist ohnehin der nächste Befehl
:shutdown
shutdown -s -t %STime% <-- soll frei wählbar sein
...
ende Ausschnitt aus dem Batch----
Hope It Helps
Frank / der Biber aus Bremen
Der Set-Befehl könnte helfen - schau mal mit "Set /?" am Dos-Prompt.
in dem Batch...
...
:: Default setzen für Shutdown-Time 300Sec/5Min...
Set STime=300
Menu anzeigen etc...
if %AuswahlEingabe% equ h goto Herunterfahrer
:Herunterfahrer
Set /P STime="Bitte die Sekunden bis zum Herunterfahren eingeben! (1h=3600sek) :"
::--- goto shutdown brauchst du nicht, ist ohnehin der nächste Befehl
:shutdown
shutdown -s -t %STime% <-- soll frei wählbar sein
...
ende Ausschnitt aus dem Batch----
Hope It Helps
Frank / der Biber aus Bremen
Die Schriftfarbe kannst du mit dem Befehl "color" einstellen. Gib mal in der Eingabeaufforderung "color /?" ein.
Eine Pause für x Sekunden kannst Du entweder mit einem Sleep-Befehl machen oder aber selber mit einem Ping basteln:
ping 127.0.0.1 -n 11 >NUL
Dabei pingt sich der Rechner n-mal selber an (127.0.0.1 ; localhost). Damit keine Ausgabe des Ping-Befehls erfolgt wird diese ins Nirwana umgeleitet (>NUL). Bei n (Anzahl der Pings) musst Du immer eine mehr nehmen als Du Sekunden willst.
Eine Pause für x Sekunden kannst Du entweder mit einem Sleep-Befehl machen oder aber selber mit einem Ping basteln:
ping 127.0.0.1 -n 11 >NUL
Dabei pingt sich der Rechner n-mal selber an (127.0.0.1 ; localhost). Damit keine Ausgabe des Ping-Befehls erfolgt wird diese ins Nirwana umgeleitet (>NUL). Bei n (Anzahl der Pings) musst Du immer eine mehr nehmen als Du Sekunden willst.
Moin L4a-Thompson,
noch ein paar Anmerkungen zu der Batch-Skizze von gestern.. als Tipps für diesen und Deine nächsten Batches... *fg
1) Früh angewöhnen: Statt "if %AuswahlEingabe% equ h ...." besser auf beiden Seiten des Operanten die Variablen/Werte einklammern o.ä, also z.B.
if "%AuswahlEingabe%" equ "h" goto ... oder
if (%AuswahlEingabe%) equ (h) goto... oder
if _%AuswahlEingabe%_ equ _h_ goto...
sonst bekommst Du einen Syntaxfehler, falls die Variable "AuswahlEingabe" leer ist. Denn dann würde Zeile aufgelöst zu "if equ h..." und das liefert das beschriebene "TILT!"
Außerdem kannst Du dann auf leer vergleichen:
if (%AuswahlEingabe%) equ () Set AuswahlEingabe=%SinnvollenDefault%
2) Immer das Schlechteste von Anwendern erwarten... wenn du zehn Benutzer nach einem Sekundenwert fragst, tippen mindestens drei davon Werte wie "-12" , "1000000", "egal" , <ESC> oder "Ägypten" ein, nur um zu sehen, ob so etwas abgefangen wird (mach ich auch so *g)
Deshalb besser nach der Zeile "Set /P STime..." noch (minimal) folgendes:
Set /a STime=%STime+0 ...... wenn keine Ziffern eingegeben wurden, kommt 0 heraus, sonst %STime%
IF (%STime%)==(0) Set STime=300 .... bei Unsinnseingaben Default setzen
3) Nix machen, was Benutzer überfordern könnte... die rufen sonst nachts bei Dir an, um sich zu beschweren. Nicht die Benutzer die Minuten in Sekunden umrechnen lassen... dass kann nur schiefgehen. Frag nach Minuten in der "Set /P "-Zeile und rechne selbst um (nach Abfrage x Minuten ... "set /a STime=%STime% * 60 ")
Hoffe, es regt zum Weiterprobieren an
Biber
noch ein paar Anmerkungen zu der Batch-Skizze von gestern.. als Tipps für diesen und Deine nächsten Batches... *fg
1) Früh angewöhnen: Statt "if %AuswahlEingabe% equ h ...." besser auf beiden Seiten des Operanten die Variablen/Werte einklammern o.ä, also z.B.
if "%AuswahlEingabe%" equ "h" goto ... oder
if (%AuswahlEingabe%) equ (h) goto... oder
if _%AuswahlEingabe%_ equ _h_ goto...
sonst bekommst Du einen Syntaxfehler, falls die Variable "AuswahlEingabe" leer ist. Denn dann würde Zeile aufgelöst zu "if equ h..." und das liefert das beschriebene "TILT!"
Außerdem kannst Du dann auf leer vergleichen:
if (%AuswahlEingabe%) equ () Set AuswahlEingabe=%SinnvollenDefault%
2) Immer das Schlechteste von Anwendern erwarten... wenn du zehn Benutzer nach einem Sekundenwert fragst, tippen mindestens drei davon Werte wie "-12" , "1000000", "egal" , <ESC> oder "Ägypten" ein, nur um zu sehen, ob so etwas abgefangen wird (mach ich auch so *g)
Deshalb besser nach der Zeile "Set /P STime..." noch (minimal) folgendes:
Set /a STime=%STime+0 ...... wenn keine Ziffern eingegeben wurden, kommt 0 heraus, sonst %STime%
IF (%STime%)==(0) Set STime=300 .... bei Unsinnseingaben Default setzen
3) Nix machen, was Benutzer überfordern könnte... die rufen sonst nachts bei Dir an, um sich zu beschweren. Nicht die Benutzer die Minuten in Sekunden umrechnen lassen... dass kann nur schiefgehen. Frag nach Minuten in der "Set /P "-Zeile und rechne selbst um (nach Abfrage x Minuten ... "set /a STime=%STime% * 60 ")
Hoffe, es regt zum Weiterprobieren an
Biber
..jepp, L4a-Thompson,
für den ersten Versuch...gut gemacht.
Noch zwei (konstruktive) Meckereien:
1) zwei aufeinanderfolgende Zeilen mit "goto hier" .."goto da" ... die zweite kann nie erreicht werden.
2) wo jetzt "exit" als Befehl steht.... lieber "goto exit" ... niemals direkt aus irgendeiner Schleife/Verzweigung so brutal ganz raus springen. Das kannst Du Dir in vielen Programmsprachen nicht erlauben...
Schönen Tag noch
Biber
für den ersten Versuch...gut gemacht.
Noch zwei (konstruktive) Meckereien:
1) zwei aufeinanderfolgende Zeilen mit "goto hier" .."goto da" ... die zweite kann nie erreicht werden.
2) wo jetzt "exit" als Befehl steht.... lieber "goto exit" ... niemals direkt aus irgendeiner Schleife/Verzweigung so brutal ganz raus springen. Das kannst Du Dir in vielen Programmsprachen nicht erlauben...
Schönen Tag noch
Biber
...einen hab ich noch, Thompson,
Es ist in Batchdateien "eigentlich" nicht möglich, nach einer Anweisungszeile einen Kommentar anzugeben. Deshalb geht auch die Zeile 6 "color A9 REM grüner Hintergrund / blaue Schrift " in die Grütze und wird gar nicht ausgeführt.
Richtiger wäre (dokumentierte Variante): es in zwei Zeilen schreiben:
...
color A9
REM grüner Hintergrund / blaue Schrift
...
Lesbarer (für mich) ist manchmal doch EINE Zeile statt zwei:
(color A9) && (REM grüner Hintergrund / blaue Schrift )
...
wird vom CMD-Interpreter wie folgt gelesen... mach Anweisung in erster Klammer, wenn das klappt (&& = logische UND-Verknüpfung), dann auch die nächste Anweisung.
Und die color-Anweisung kannst Du mit "color" (ohne Parameter) wieder auf Standard zurücksetzen. Solltest du beim kontrollierten Beenden machen ( als nach der Sprungmarke :exit ganz unten)
Es ist in Batchdateien "eigentlich" nicht möglich, nach einer Anweisungszeile einen Kommentar anzugeben. Deshalb geht auch die Zeile 6 "color A9 REM grüner Hintergrund / blaue Schrift " in die Grütze und wird gar nicht ausgeführt.
Richtiger wäre (dokumentierte Variante): es in zwei Zeilen schreiben:
...
color A9
REM grüner Hintergrund / blaue Schrift
...
Lesbarer (für mich) ist manchmal doch EINE Zeile statt zwei:
(color A9) && (REM grüner Hintergrund / blaue Schrift )
...
wird vom CMD-Interpreter wie folgt gelesen... mach Anweisung in erster Klammer, wenn das klappt (&& = logische UND-Verknüpfung), dann auch die nächste Anweisung.
Und die color-Anweisung kannst Du mit "color" (ohne Parameter) wieder auf Standard zurücksetzen. Solltest du beim kontrollierten Beenden machen ( als nach der Sprungmarke :exit ganz unten)