Script bei Ausschalten ausführen, geht nur halb

punktnetz

Cadet 2nd Year
Registriert
Aug. 2008
Beiträge
25
Hallo,

ein Script (.bat-Datei) welches beim Herunterfahen oder Abmelden ausgelöst werden soll, scheint seltsamerweise nur halb zu funktionieren.

Das Script wurde wie hier beschrieben eingestellt:
http://technet.microsoft.com/en-us/library/cc770300.aspx

Es enthält folgende Befehle:

Code:
regedit /s c:\zeug.reg >> c:\log.txt

echo test >> c:\log.txt

del /Q /S [AppdataTemp-Ordner] >> c:\log.txt

del /Q /S [AnderesZeug] >> c:\log.txt

Blöderweise wird nur der regedit-Befehl ausgeführt, die anderen Sachen nicht. Die log.txt-Datei ist leer.
Hat jemand einen Tipp wo und wie ich weitermachen könnte? Eventuell ein paar Stichworte zum googln?
Danke.
 
Zuletzt bearbeitet: (regedit korrigiert)
Wenn du Regedit einfach so aufrufst, dann wird nur das Programm gestartet, das Fenster öffnet sich und Regedit wartet darauf das der Nutzer etwas macht.
Das Skript wird unterbrochen und läuft erst weiter wenn Regedit beendet wird.

Ich tippe mal das der Shutdown anschliessend das Skript und Regedit beendet.
Ergänzung ()

Falls du irgendwas mit der Registry machen willst, z.B. exportieren, dann solltest du dich mit den Parametern für Reg.exe vertraut machen.
Reg ist auch Skript-fähig. ;)
 
Genau, "Reg Add" oder "Reg Del" und "Reg export" sind da die Zauberworte. Ausserdem erfordert das beschreiben von "C:\" Adminrechte, zumindest die Rechte der Ordner in Zeile 7 sollten ebenfalls geklärt sein. Eventuell das Script mit Systemrechten ausführen lassen und statt .bat .cmd einsetzen.

Ausserdem würde ich beim Löschen die Parameter "/q /s" auf "/s /q" ändern.

Vielleicht auch "log.txt" statt in "C:\" anlegen zu lassen, die Ordner "%Public%\Desktop" oder "%temp%" benutzen.

Ohne den gesamten Batch, zumindest mit Beispielordnern, kann man das ohnehin nicht genau beurteilen.
 
Zuletzt bearbeitet: (Korrekturen!)
Sorry, hinter regedit kommt noch /s und eine zeug.reg.
Um es deutlich zu sagen: der regedit Teil _wird_ ausgeführt, man sieht ganz eindeutig die Änderungen nach Neustart in der Registry, aber der Rest nicht.
Ich probiere mal %Public% als Ziel für log.txt, obwohl ich nicht ganz verstehe warum da Zugriffsbeschränkungen herrschen sollten.
Die Ausgabe in log.txt ist auch eher zweitrangig, solange die del-Befehle ausgeführt werden, was aber nicht geschieht.
Cmd anstatt .bat wird auch probiert werden.
 
Dann ist wohl "Reg Import" die Option Deiner Wahl! Solange der Import Deiner Regdatei nicht durchgeführt wird, wird auch der Batch stehen bleiben und keine weiteren Befehle ausführen.

Einfach mal in einer Kommandozeile "Reg Import /?" ausführen um die gültigen Parameter zu erfahren.
 
punktnetz schrieb:
Sorry, hinter regedit kommt noch /s und eine zeug.reg.
Um es deutlich zu sagen: der regedit Teil _wird_ ausgeführt, man sieht ganz eindeutig die Änderungen nach Neustart in der Registry, aber der Rest nicht.
Ich probiere mal %Public% als Ziel für log.txt, obwohl ich nicht ganz verstehe warum da Zugriffsbeschränkungen herrschen sollten.
Die Ausgabe in log.txt ist auch eher zweitrangig, solange die del-Befehle ausgeführt werden, was aber nicht geschieht.
Cmd anstatt .bat wird auch probiert werden.

.cmd statt .bat ?? Was soll das bringen, wenn das aufgerufene Programm nicht skriptfähig ist?


Nochmal zum mitschreiben:
Regedit öffnet eine Registry (exportiert oder nicht) zum Bearbeiten. Dein Skript bearbeitet nix.
Was soll denn da bitte nach dem Start von Regedit passieren? Hast du eine Fernsteuerung für den Registrierungseditor ?
-v verbose, -s silent , was bringt dir das beim Shutdown?

Deine Postings ergeben keinen Sinn für mich.
 
Zuletzt bearbeitet:
Wenn man folgendes von einer Kommandozeile aus aufruft, funktioniert der Vorgang tadellos:
Code:
regedit /s c:\pafad\zu\datei.reg
Es gab keinen Hinweis dass es so nicht scriptfähig war, probiere das ruhig aus Plaste, es läuft, auch aus einer .bat heraus.
Warum .cmd statt .bat klappen soll, will mir auch nicht einleuchten, aber es ist ein Vorschlag den ich ausprobiert habe.

Es funktioniert nun mit folgender Vorgehensweise mit .cmd-Datei (ICBA auf .bat zurückzustellen, aber mein Bauch sagt es sollte gehen):
Code:
reg import c:\pfad\zu\zeug.reg >> %public%\log.txt

echo test >> %public%\log.txt
     
del /Q /S [AppdataTemp-Ordner] >> %public%\log.txt
     
del /Q /S [AnderesZeug] >> %public%\log.txt

Danke an alle.
 
Zurück
Oben