Anzeige

Am Puls von Microsoft

Anzeige

Aufgabenplanung, Batch Datei zum öffnen eines Programms funktioniert nicht richtig

Sauerkraut

Herzlich willkommen
Guten Tag,

ich habe mir eine kleine Batch Datei geschrieben welches ein Programm X schließt, Dateien mit einer Bestimmten Endung verschiebt und anschliesend das Proigamm X wieder minimiert öffnet.
Das ganze funktioniert auch wenn ich die Batch Datei Manuell ausführe. Soll diese vom Aufgabenplaner ausgeführt werden, dann wird lediglich das Progamm X geschlossen und die Dateien werden verschoben, dass Programm X aber nicht mehr geöffnet.

Ich hoffe Ihr könnt mir hier weiterhelfen.

Meine Batch Datei hat folgenden Inhalt:

Code:
@ECHO OFF

TASKKILL /IM ProgrammX.exe /F /T

move C:\Users\Benutzer\Desktop\ZuVerschiebendeDateien\*.xlsx C:\Users\Benutzer\Desktop\Zielverzeichnis

start /D "C:\Program Files (x86)\ProgrammOrdner" /min ProgrammX.exe

exit

In dem Aufgabenplaner habe ich noch folgende Einstellungen

(Allgemein)
- Unabhängig von der Benutzeranmeldung ausführen
- Mit höchsten Privilegien ausführen

(Aktionen Fenster)
Programm/Skript:
C:\Windows\SysWOW64\cmd.exe

Argumente hinzufügen (optional):
/c"C:\Users\Benutzer\Desktop\DieBatchDatei.bat"

Ich wäre über jede Hilfe Dankbar

Gruß
 
Anzeige
Es muss C:\Windows\System32\Cmd.exe angegeben werden, auserdem muss die Batchdatei die Endung .cmd besitzen. In der Zeile "Argumente" ist "/c" mit einem Leerzeichen vom Rest der Zeile zu trennen und "C:\Users\Benutzer\Desktop" sollte besser als "%Userprofile%\Desktop" angegeben werden.
 
Da habe ich ja doch noch einiges verbessern können! Danke dafür =)

Leider hat sich nichts an dem Verhalten geändert.
Programm wird geschlossen, die Dateien verschoben allerding wird das Programm nicht wieder geöffnet. Wie kann das sein?
 
Korrigiere die Befehlszeile zum Start des Programmes:

Code:
start "" /D "%userprofile%\Desktop" /min "%ProgramFiles(x86)%\ProgrammOrdner\ProgrammX.exe"

Denn der Parameter /D erwartet den Pfad, der das Anfangsverzeichnis der Befehlsausführung darstellt. Der Programmpfad muss trotzdem angegeben werden. Im übrigen nennt die Aufgabenplanung was bei der Ausführung schief ging.
 
Ich verstehe es einfach nicht warum das Progamm immernoch ncith gestartet wird. Es gibt auch keine Fehlermeldungen.... Aktion wurde erfolgreich abgeschlossen und die Aktion fertiggestellt.
 
Ein Programm, welches sich im Programmverzeichnis befindet, lässt sich öfter mal nicht via Batch oder PS starten. Auch dann nicht, wenn man das Script mit Adminrechten ausführt. Habe ich gerade unter Windows 10 ein paar mal erlebt.

Es gibt einen einfachen Kniff: Von dem Programm, das ausgeführt werden soll, eine Verknüpfung auf dem Desktop erstellen und dann im Script das Ziel zum Ausführen auf den Link ausrichten.
 
Eigentlich sollte man dem Script die Zeit geben, den Batch durchzuführen und zu beendigen.
Möchte man nach dem Ausführen einen weiteren (Start-) Befehl aufrufen, kann man das mit dem Parameter /wait erreichen.
Code:
start /b/wait programmpfad
/b schließt die Batch-Datei, außerdem benötigt "" einen Titel für das neue cmd-Fenster, den ich hier noch nicht gesehen hatte. ;)
 
Ich halte von TASKKILL eh gar nichts. Programme sollten regulär beendet werden, es gibt nicht umsonst diverse Script-Tools, die Keys an die Programme senden können, oder Mausklicks. Dann wird gewartet und dann erst weiter ausgeführt. Immer diese sinnlosen Vergewaltigungen per Batch :rolleyes:
 
Ich sehe das genauso, .Bernd.
Ich würde das sowieso über PowerShell lösen:

Code:
$MeinProgramm = (Get-ChildItem "$Env:ProgramFiles (x86)\MeinProgramm\Progr.exe").Name
$StartMeinProgramm = Start-Process "$MeinProgramm" -Verb RunAs -PassThru
$StartMeinProgramm.WaitForExit()
Exit
 
Zuletzt bearbeitet:
Leider haben die Lösungsvorschläge von @Micha45 und @Franz nicht das Problem behoben. Von der Batch Datei habe ich nun Abschied genommen und mich an die PowerShell gewagt. Schnell war das Starten, Verschieben und Ausführen "Programmiert". Führe ich das Skript mit Rechtsklick > Mit Powershell ausführen aus, dann funktioniert das Skipt ordnungsgemäß.
Möchte ich es jedoch über die geplante Task ausführen dann funktioniert ledigdlich das schliessen und verschieben jedoch nicht das erneute starten. Die Skript Ausführungsrichtlinie habe ich auch auf "Unrestricted" gesetzt.

Habt ihr eine Ahnung warum ich mit der Geplanten Task keine Befehle von Skripten zum starten von Programmen ausgeführt werden?

Danke =)
 
Falls du die Windows 10 Pro hast:
In den Gruppenrichtlinien kann man das Ausführen von Powershell-Scripts explizit erlauben.
Wo genau das ist, kann ich im Moment nicht nachschauen, da ich auf der Arbeit bin.

Die Ausführungsrichtlinie würde ich nie auf "Unrestricted" einstellen, da dies ein Sicherheitsrisiko darstellt.
"RemoteSigned" ist besser.
 
Anzeige
Oben