michael-itler
Goto Top

Batch Programm verhalten bei shoutdown -p

Hallo an alle,

ich habe eine Batch Programm die am Anfang folgendermaßen aufgebaut ist:

:Ping
set cnt=0
ping  192.168.2.1 -n 10 -w 1000 -l 2000 -4 | find /i "TTL" >nul 2>&1  
if errorlevel 1 (
goto verbinden
) else (
goto ping
)

:verbinden

echo %computername% %date% %time% >> c:\Support\WLAN_Fehler_%computername%.txt
netsh wlan show interface >> c:\Support\WLAN_Fehler_%computername%.txt


Die Batch Datei läuft in einer Dauerschleife funktioniert seit längerem wie gewollt und macht was sie soll.

Allerdings habe ich ein Problem, wird der PC an dem sie läuft über einen "shoutdown /p" Befehl sofort heruntergefahren läuft die Batch Programm zum Punkt
Zeile 13 und dieser wird auch noch erfolgreich ausgeführt.

Ziel muss es aber sein, dass beim "shoutdown /p" die Batch nicht soweit kommt und den "Echo" Befehl ausführt.

Hat hier jemand eine Idee wie ich das umsetzen könnte?

Content-ID: 355421

Url: https://administrator.de/forum/batch-programm-verhalten-bei-shoutdown-p-355421.html

Ausgedruckt am: 25.12.2024 um 13:12 Uhr

Meierjo
Meierjo 20.11.2017 um 11:04:38 Uhr
Goto Top
Hallo

Allerdings habe ich ein Problem, wird der PC an dem sie läuft über einen "shutdown /p" Befehl sofort heruntergefahren läuft die Batch Programm zum Punkt
Zeile 13 und dieser wird auch noch erfolgreich ausgeführt.

Wie wird den der Computer heruntergefahren?? Ist aus diesem Code nicht ersichtlich.
Wenn auch per Batch, nach dem Befehl Shutdown ....... eine Pause einbauen, bis die Netzwerkerbindung unterbrochen ist, dann sollte dein oben abgebildeter Batch den Echo Befehl absetzen

Gruss Urs
Michael-ITler
Michael-ITler 20.11.2017 um 11:14:46 Uhr
Goto Top
Hallo Meierjo,

wie beschrieben wird der PC mit dem Befehl "shutdown /p" aus einem anderen Programm bei Arbeitsschluss Heruntergefahren. Dies lässt sich auch nicht ändern.
Ich will ja das beim Herunterfahren der "Echo" Befehl nicht ausgeführt wird.
Penny.Cilin
Penny.Cilin 20.11.2017 um 11:14:47 Uhr
Goto Top
Hallo,

vielleicht den Parameter /f dazunehmen?
Also
shutdown /p /f
und dann wird das Betriebsssystem gnadenlos runtergefahren.

Und denke vorher dran die offenen Dateien zu sichern.

Gruss Penny
Michael-ITler
Michael-ITler 20.11.2017 um 11:24:58 Uhr
Goto Top
Hallo Penny.Cilin,

der Shutdown /p Befehl wird aus einer Fremdsoftware ausgelöst den ich leider nicht beeinflusen kann.

Ich verstehen nicht ganz, warum die Batch wo sie doch eigentlich komplett abgebrochen werden sollte noch den Echo Befehl ausführt.
Meierjo
Meierjo 20.11.2017 um 11:26:07 Uhr
Goto Top
Hallo

Ich will ja das beim Herunterfahren der "Echo" Befehl nicht ausgeführt wird.

Achso, das hatte ich aus deinem Post anders verstanden.

Also wird nach dem Shutdown Batch dein oben abgebildeter Batch aufgerufen??
Dann einfach diesen Batch nicht aufrufen, wird ja für den Shutdon nicht benötigt, oder??

Gruss
Penny.Cilin
Penny.Cilin 20.11.2017 aktualisiert um 11:32:38 Uhr
Goto Top
Hallo,

wir sehen aber immer noch nicht, wo der Shutdown ausgeführt wird.

Wenn Errorlevel 1 auftritt, springt die Batchdatei zum Label
Verbinden
und führt den Befehl aus. Was auch richtig ist (zumindest was die Batchdatei betrifft).

Ich sehe NIRGENDWO, daß ein externes Programm aufgerufen wird, was den Shutdown auslöst.

Also WO wird der Shutdown ausgeführt???
Wenn das nur teile der Batchdatei sind, dann liefere den Rest nach.

Gruss Penny
Pedant
Pedant 20.11.2017 um 11:34:30 Uhr
Goto Top
Hallo Michael-ITler,

Zitat von @Michael-ITler:
Ziel muss es aber sein, dass beim "shoutdown /p" die Batch nicht soweit kommt und den "Echo" Befehl ausführt.
...dann ist das "und" nicht so verknüpfend gemein wie geschrieben, also nicht
"dass die Batch nicht soweit kommt und dass die Batch den "Echo" Befehl ausführt"
sondern eher so:
"dass die Batch nicht soweit kommt, um den "Echo" Befehl auszuführen"

Vielleicht reicht es ein
taskkill /im cmd.exe
hinter das
shutdown /p
zu schreiben?
Das würde alle Batches sofort abschießen.

Man könnte auch ein
echo stopp > stopp.txt
vor das
shutdown /p
schreiben und in der anderen Batch, an geeigneter Stelle ein
if exist stopp.txt exit
einfügen und sie mit
if exist stopp.txt del stopp.txt
beginnen lassen.

Gruß Frank
Michael-ITler
Michael-ITler 20.11.2017 um 11:54:18 Uhr
Goto Top
Hallo,

das Batch-Programm läuft in einer dauerschleife im Hintergrund immer mit.

der Shutdown Befehl kommt aus einem Fremdprogramm, der durch drücken einer Taste am PC durch den Mitarbeiter am Feierabend ausgelöst wird.
Ein Herunterfahren des PC über den normalen Weg ist aufgrund von Einschränkungen für den Mitarbeiter nicht möglich.
miniversum
miniversum 20.11.2017 um 12:10:58 Uhr
Goto Top
Hallo,

du kannst mit den Befehl "Tasklist" die Liste der Laufenden Tasks abrufen.
Du kannst mal versuchen ob du hier die shutdown.exe siehst und wenn ja in deiner Batch entsprechend zyklisch mit abfragen und darauf reagieren.
Eine andere Möglichkeit den Shutdown abzufragen fällt mir jetzt gerade nicht ein.

Gruß
...
Arano
Arano 20.11.2017 um 12:17:10 Uhr
Goto Top
Hallo,

es wird wohl auch so sein das der shutdown dein ping|find "abschießt".
Und das hat, dem Script nach, das goto verbinden zufolge.

~Arano
Penny.Cilin
Penny.Cilin 20.11.2017 um 12:44:57 Uhr
Goto Top
@Arano

ja da kannst Du Recht haben. Der Beitragsersteller schreibt ja, daß der Shutdown von einem Fremdprogramm ausgelöst wird.

Es müssten mehr Informationen vorliegen.
  • Was ist der Sinn dieses Konstruktes?
  • Welches Fremdprogramm löst den Shutown aus
  • Warum muss der Shutdown durch das Fremdprogramm ausgelöst werden?
  • Welche Betriebsysteme / Hardware ist involviert?

Gruss Penny
Michael-ITler
Michael-ITler 20.11.2017 um 13:10:30 Uhr
Goto Top
Hallo Arano,

genau hier vermute ich auch das Problem. Es müsste eine Möglichkeit geben dem Batch-Programm klar zu machen das es nicht zu "goto verbinden" springt. Nur wie?
MrCount
MrCount 20.11.2017 um 13:18:06 Uhr
Goto Top
Servus,

Zitat von @miniversum:

du kannst mit den Befehl "Tasklist" die Liste der Laufenden Tasks abrufen.
Du kannst mal versuchen ob du hier die shutdown.exe siehst und wenn ja in deiner Batch entsprechend zyklisch mit abfragen und darauf reagieren.

Das sollte schon gehen...
Michael-ITler
Michael-ITler 20.11.2017 um 13:20:49 Uhr
Goto Top
Hallo Penny.Cilin,

Punkt 1:
Der Sinn liegt darin, dass das Batch-Programm solange der PC läuft eine IP-Adresse anpingt, antwortet diese IP-Adresse nach 10 Versuchen nicht wird die WLAN Verbindung getrennt und neu Verbunden.

Punkt 2: Bei den PCs handelt es sich um Terminals der Marke ADS-TEC Modell VMT-7012. Diese Haben einen Ein/Aus Schalter am Gehäuse das den Shutdown auslöst.

Punkt 3: Der PC ist so stark eingeschränkt, dass der Mitarbeiter nicht in die Windows Oberfläche kommt, daher kann er nur über den Ein/Aus Schalter heruntergefahren werden.

Punkt 4: Windows 7 Embedded Standard; ADS-TEC Modell VMT-7012
Michael-ITler
Michael-ITler 20.11.2017 um 13:23:54 Uhr
Goto Top
Das drücken der Ein/Aus Taste löst den Shutdown Befehl aus und der PC fährt inerhalb von wenigen Sekunden herunter. Wie soll ich das zyklisch abfragen?
Arano
Arano 20.11.2017 aktualisiert um 13:33:42 Uhr
Goto Top
Hi.

Das hatte @miniversum ja schon angedeutet.
In dem Anweisungsblock if errorlevel 1 implementierst du noch eine Bedingung in der du mit tasklist | find nochmal nach shutdown suchst und daraufhin "nichts tust bzw. exit" oder goto verbinden.

Zumindest wäre das eine Möglichkeit ...falls das Shutdown-Signal nicht "schneller" ist *g*


~Arano
Arano
Arano 20.11.2017 um 13:37:59 Uhr
Goto Top
Mist Kaffe in der Küche stehen lassen...

Oder ein eigenes kleines Programm (C/C++/whatEver) das als "shutdown.exe" gespeichert wird.
Dieses killt dann zuerst die Batch und ruft anschließend die "shutdown-original.exe /p" auf.

~Arano
Pedant
Pedant 20.11.2017 um 14:59:59 Uhr
Goto Top
Hallo Michael-ITler,

Zitat von @Michael-ITler:
Das drücken der Ein/Aus Taste löst den Shutdown Befehl aus...

Wie ist denn der Schalter mit dem Shutdown-Befehl verbunden?
Ich habe den Eindruck, dass das sowas wie ein Tastaturmakro sein müsste.

Im Handbuch
https://www.ads-tec.de/industrial-it/terminals/vmt7000-serie/download.ht ...
auf Seite 33 steht zum Schalter mit dem Schlüsselsymbol:
Nicht belegt. Konfiguration dieser Ebene kann kundenspezifisch über das Programm Softkeyboard programmiert werden
Kann der eventuell als Ausschalter verwendet, also dort ein eigenes Skript hinterlegt werden?

Es wird im Handbuch auch ein "Configuration Center" erwähnt.
Dazu gibt es auch ein Handbuch:
https://www.ads-tec.de/support/download/industrial-it/handbuecher.html
https://www.ads-tec.de/fileadmin/download/doc/manual/industrial/Configur ...

Vielleicht gelingt damit die Umprogrammierung des Power- und/oder Schlüsselschalters,
dann könntest Du dort die hier schon gennanten Tipps umsetzen.

Gruß Frank
em-pie
em-pie 20.11.2017 um 21:28:34 Uhr
Goto Top
Moin,

Warum musst du eigentlich prüfen, ob die Wifi-Connection noch besteht?
Ich würde hier mal das Problem versuchen zu eliminieren.

Denn dann kannst du den Ein-/ Aus-Schalter ganz normal verwenden...

Denn die Bauch existiert ja - wenn ich das richtig heraus gelesen habe - nur, um die wifi-Verbinung zu prüfen und bei Misserfolg neu zu starten, oder?

Gruß
em-pie
Michael-ITler
Michael-ITler 22.11.2017 um 17:04:40 Uhr
Goto Top
Hallo,

ja die Batch prüft ständig die WLAN Verbindung, wird ein längerer abbruch erkannt, gibt es einen "Reconnect". Das ist leider nötig weil wir seit mittlerweile 1 Jahr immer wieder abbrüche im WLAN haben. Die Hersteller der beteiligten Kompontenten (Access Points, PC, WLAN-Karte) konnten das Problem bisher leider noch nicht zufriedenstellend lösen.
Das Batch Programm protokoliert jeden erkannten Abbruch, nur leider wird der "shutdown" auch als Abbruch erkannt. Und genau hier liegt mein Problem.
Pedant
Pedant 22.11.2017 um 21:23:00 Uhr
Goto Top
Hallo Michael-ITLer,

Zitat von @Michael-ITler:
...genau hier liegt mein Problem.
...und keiner der gennanten Lösungsvorschläge kommt in Frage oder alle funktionieren nicht?

Gruß Frank