PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wieso funktioniert taskill in einer Batch nicht?


Saugbär
2024-03-16, 05:38:35
Ich möchte mit einer Batchdatei Afterburner und RTSS starten oder schließen.
RTSS sorgt durch einen Bug für erhöhten Energieverbrauch.
Windows 10 Enterprise
Unwinder ( Der entwickler von MSI Afterburner und RTSS) wörtlich: No support vor Laptops
Habe ein Problem mit Taskkill
Das Verschachteln mit den doofen Klammern hab ich probiert, war nur am verzweifen und habs aufgegeben.
ich mach sie, wenn sie läuft, schön. Damit kann man sie dann universell verwenden.
Beispiel:
@echo off
set pl=
set pl=%pl% RTSS.exe
set pl=%pl% MSIAfterburner.exe
Beispiel:

task tasklist |find /i "%MSIAfterburner.exe%" >nul
if %errorlevel% == 0 (
echo Das Programm "%MSIAfterburner.exe%" leauft gerade!
) else (
echo Das Programm "%MSIAfterburner.exe%" leauft gerade nicht!
)
tasklist |find /i "%RivaTuner Statistics Server\RTSS.exe%" >nul
if %errorlevel% == 0 (
echo Das Programm "%RivaTuner Statistics Server\RTSS.exe%" leauft gerade!
) else (
echo Das Programm "%RivaTuner Statistics Server\RTSS.exe%" leauft gerade nicht!list |find /i "%MSIAfterburner.exe%" >nul
if %errorlevel% == 0 (
echo Das Programm "%MSIAfterburner.exe%" leauft gerade!
) else (
echo Das Programm "%MSIAfterburner.exe%" leauft gerade nicht!
)
tasklist |find /i "%RivaTuner Statistics Server\RTSS.exe%" >nul
if %errorlevel% == 0 (
echo Das Programm "%RivaTuner Statistics Server\RTSS.exe%" leauft gerade!
) else (
echo Das Programm "%RivaTuner Statistics Server\RTSS.exe%" leauft gerade nicht!

funktioniert einfach nicht
fragt nur den Status ab ....und gibt den Status aus
Wie bekommt man das richtige errorlevel?:crazy2:




Mit "notepad" funktioniert meine Batch komischerweise
Notepad startet und schließt

Es reicht im Prinzip der Befehl:
taskkill /pid 9444 /pid 11864 /t
Im Taskmanager unter Details zu sehen
Unbedingt die Pid Kontrolliern !!!!!!!!!!!!!!
Wer weiß, was ansonsten abgeschoßen wird
im cmd.


Bekomme die Fehlermeldung:
Ursache: Zugriff verweigert
FEHLER: Der Prozess mit PID 11864 (untergeordnetem Prozess von PID 9592) konnte nicht beendet werden.
Ursache: Mindestens ein untergeordneter Prozess wird noch ausgeführt.

PID 9592 ist jedoch der Explorer:freak:

Habe schon tagelang gebastelt,
Viel gelesen, einige Ideen geklaut.
https://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-kommandos?id=tasklist
zum Bleistift.....
Er hat eine ordendliche Sammlung an Batch Demos
zum Schluß spring der Path nach C:\Program Files (x86)\RivaTuner Statistics Server\
man muß wieder zurück in den Testordner
cd C:\testordner\ sollte helfen
Habe meine Datei a.bat benannt zum schnelltesten:freak:
@echo off
set Programm=explorer

QPROCESS "MSIAfterburner.exe">nul
Rem Taskinfo hat nicht funktioniert
if %errorlevel% EQU 0 goto an
if %errorlevel% EQU 1 goto aus
:an
taskkill /pid 9444 /t /pid 11864 /t

rem "Username eq administrator"
rem pid 2104 (Afterburner) pid kommt hier pid 11864 (RTSS) Im Taskmanager unter Details zu sehen
rem Unbedingt kontrollieren !!!!!
echo Tuning ist an! (war zu kontrollzwecken, ob der goto Befehl funktionert)
goto ende
:aus
cd "C:\Program Files (x86)\RivaTuner Statistics Server\"
start RTSS.exe


cd "C:\Program Files (x86)\MSI Afterburner\"
start MSIAfterburner.exe


echo off

rem TIMEOUT /T 2 /NOBREAK
rem EXIT /B




rem waren verschiedene Versuche
rem cmd /c start "" "C:\Program Files (x86)\RivaTuner Statistics Server\RTSS.exe"



rem Call C:\Program Files (x86)\RivaTuner Statistics Server\RTSS.exe
Die rem funktionieren teilweise oder sind noch in Entwicklung
Weiter Probleme:
1.: Beim Starten von RTSS und MSI Afterburner muß ich bestätigen
2.: Das Programm startet nicht minimiert.
Ist aber eher nebensächlich....
Starte ich MSI Afterburner manuell, funktioniert es.....grrrrr

Freestaler
2024-03-16, 07:34:12
Frage: ändert sich nicht die Pid bei jedem Aufruf?

Ich nutze jeweiles taskkill wie folgt "taskkill /im anwendung.exe /f".

Tooglescript allenfalls auf ps aufbauen? Dort hast mit start-process mehr möglichkeiten.

myMind
2024-03-16, 09:15:50
Das Verschachteln mit den doofen Klammern hab ich probiert, war nur am verzweifen und habs aufgegeben.

Tu dir selbst den Gefallen und verwende die Powershell. Die ist in solchen und vielen anderen Belangen weit besser.

Beispiel für taskkill in Powershell:

Get-Process -ErrorAction SilentlyContinue MSIAfterburner | Stop-Process
Get-Process -ErrorAction SilentlyContinue RTSS | Stop-Process

Darkman.X
2024-03-16, 22:32:47
Dein 2. Beispiel (die Anzeige, ob Programm X läuft) funktioniert nicht, weil du mit %-Zeichen suchst. CMD geh davon aus, dass du damit eine Variable ansprichst. Wenn aber die Variable nicht existiert, wird FIND halt inkl. den %-Zeichen suchen, was dann aber nichts findet.

Und die Sache mit der Process-ID ist ja total dämlich. Warum nicht direkt mit dem Namen der EXE-Datei killen (siehe Text von "Freestaler")? Und wenn es aus unbekannten Grund unbedingt mit PID sein muss, dann muss die PID halt mit einer FOR-Schleife ausgelesen werden, falls Tasklist und qprocess keinen Parameter haben, direkt nur die PID alleine auszugeben.

Saugbär
2024-03-17, 00:12:43
Die Batch funktioniert im prinzip
Mit Notepad als Opfer getestet und da hat alles funktioniert.
Habe jetzt erst mitbekommen, das die Batch Adminrechte dafür braucht,
um mit taskkill MSIAfterburner auszuschalten.