Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch kontrolliert, ob ein Task gestartet ist, und startet ein Program

Mitglied: imkrl001

imkrl001 (Level 1) - Jetzt verbinden

13.11.2007, aktualisiert 15.11.2007, 8956 Aufrufe, 4 Kommentare

Hallo,
bin neu hier, und habe leider wenug Erfahrung mit Batch-Datein...

kann jemand eine Batch-Datei erzeugen, die ständig läuft
(kann auch alternativ minutlich als 'Geplannten Task' gestartet werden)
und minutlich abfragt, ob ein bestimmtes Program(Task: hier scgui32.exe) läuft,
dann, wenn das Program läuft, wird ein weiteres Program (hier c:\temp\cercala.exe) gestartet und das 1. Program (scgui32.exe) gekillt.

Hintergrund: das 1. Program wird nicht wahrgenommen welches aus einer Anwendung gelegentlich gestartet wird. Damit es akustisch und visuell Wahrgenommen werden kann, wird das 2. Program gestartet. Damit das ganze auch ein weiteres mal klappt, muß das 1. Program wieder geschlossen werden.

Danke im vorraus
Mitglied: bastla
13.11.2007 um 13:39 Uhr
Hallo imkrl001 und willkommen im Forum!

Da Du Dein Betriebssystem nicht genannt hast, unterstelle ich einmal XP oder später (ich war versucht, "höher" zu schreiben, fand das aber im Hinblick auf Vista nicht unbedingt angemessen).

Ein Endlosbatch dafür könnte so aussehen:
01.
@echo off & setlocal
02.
set "Tsk=scgui32.exe"
03.
set "Prog=c:\temp\cercala.exe"
04.

05.
:Loop
06.
set Running=
07.
for /f %%i in ('tasklist') do echo (%%i)|findstr /C:"(%Tsk%)" >nul && set Running=True
08.
if not defined Running goto :Pause
09.

10.
start "" "%Prog%"
11.
taskkill /IM "%Tsk%" >nul
12.

13.
:Pause
14.
::15 s Pause
15.
ping -n 15 localhost>nul
16.
goto :Loop
Falls Du die Pause zwischen den Überprüfungen nicht benötigst, einfach "::" vor die Zeile "ping ..." schreiben - damit wird die Zeile zum Kommentar und nicht ausgeführt (natürlich kannst Du sie auch ganz entfernen, wenn Du sie sicher nicht brauchen wirst).

Grüße
bastla
Bitte warten ..
Mitglied: imkrl001
15.11.2007 um 07:08 Uhr
Ja, klappt super. Tausend dank...


Mir fällt gerade noch ne Möglichkeit ein, die Batch zu nutzen...

Kann man die Batch so umschreiben, das sie erkennt, wenn eine bestimmte Task mehr als einmal läuft (also 2 mal) und dann ein Program startet, evt. auch dann noch die neuere der beiden Task killt ??
Bitte warten ..
Mitglied: imkrl001
15.11.2007 um 09:48 Uhr
OK, habe selber ein wenig Programmiert... und eine Lösung gefunden....

die 2. Task mit gleichen Namen hat in der Taskleist einen anderen Namen, den man abfragen kann...

01.
@echo off & setlocal
02.
set "Prog=c:\temp\cercala1.exe"
03.

04.
:Loop
05.
set Running=
06.
for /f %%i in ('tasklist /FI "WINDOWTITLE eq Active Notes"') do echo (%%i)|findstr /C:======= >nul && set Running=True
07.
if not defined Running goto :Pause
08.

09.
start "" "%Prog%"
10.
taskkill /FI "WINDOWTITLE eq Active Notes" >nul
11.

12.
:Pause
13.
::30 s Pause
14.
ping -n 30 localhost>nul
15.
goto :Loop
16.
kann man das noch was verschönern ??
die Ausgabe ins echo -> '
'
gefällt mit nicht,
evt kann man auch den "WINDOWTITLE eq Active Notes" als Kürzrl hinterlegen...
Bitte warten ..
Mitglied: bastla
15.11.2007 um 19:17 Uhr
Hallo imkrl001!

Für die Anforderung "wenn eine bestimmte Task mehr als einmal läuft ... ein Program startet, ... die neuere der beiden Task killt" würde ich eher auf VBScript zurückgreifen. Ebenfalls als Endlosschleife laufend könnte das so aussehen:
01.
strTask = "scgui32.exe"
02.
strProg = "c:\temp\cercala.exe"
03.

04.
Set WshShell = WScript.CreateObject("WScript.Shell")
05.
strComputer = "." 
06.

07.
Do
08.
	Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
09.
	Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process",,48) 
10.
	strOldest = "9"
11.
	For Each objItem in colItems
12.
		If LCase(objItem.Name) = strTask Then
13.
			If objItem.CreationDate < strOldest Then strOldest = objItem.CreationDate
14.
		End If
15.
	Next
16.
	
17.
	bRun = False
18.
	Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process",,48) 
19.
	For Each objItem in colItems
20.
		If LCase(objItem.Name) = strTask Then
21.
			If objItem.CreationDate <> strOldest Then
22.
				objItem.Terminate
23.
				bRun = True
24.
			End If
25.
		End If
26.
	Next
27.

28.
	If bRun Then WshShell.Run strProg 'Programm starten
29.

30.
	WScript.Sleep 30000 '30 Sekunden Pause
31.
Loop
Das Script killt alle "scgui32.exe"-Tasks mit Ausnahme des ältesten (festgestellt anhand des "CreationDate" im Format "20071115191028.750000+060") und startet für den Fall, dass zumindest ein Task beendet werden musste (und demnach gleichzeitig mindestens zwei aktiv waren) das angegebene Programm ("cercala.exe"). Beendet wird dieses Programm allerdings nicht wieder durch das Script, sodass also zwar nach spätestens 30 Sekunden immer nur ein "scgui32.exe"-Task läuft, es aber viele "cercala.exe"-Tasks geben könnte.

Das Script selbst läuft übrigens als Task "wscript.exe" (nur für den Fall, dass Du es auch wieder beenden wolltest ).

In diesem Zusammenhang wäre vielleicht auch noch ein Hinweis auf den "ProcessExplorer" (einstmals von "SysInternals", jetzt MS) angebracht. Damit kannst Du die laufenden Tasks viel besser, als dies mit dem Taskmanager oder über die Kommandozeile möglich ist, überblicken.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch zum Program-Start
gelöst Frage von ManneKLBatch & Shell30 Kommentare

Hallo, komme hier nicht zum erforderlichen Ergebnis,daß nach dem Eintrag in der Registry das Programm,User bezogen, gestartet wird. hier ...

Windows Server
SCCM 2012 R2 Task Sequence startet nicht
gelöst Frage von Hansi1985Windows Server6 Kommentare

Hallo, Ich bin Admin in einer Schule und wir haben den SCCM 2012 R2 Update 1706 zum Software deployen. ...

Batch & Shell

Batch - Warten bis bestimmter Task läuft

gelöst Frage von Winfried-HHBatch & Shell5 Kommentare

Hallo Experten! Wie kann ich in einer Batch warten, bis ein bestimmter Task (der nicht von dieser Batch gestartet ...

Windows 10

PC startet nach Task herunterfahren nicht mehr automatisch

gelöst Frage von Diddi-tbWindows 1015 Kommentare

Hallo zusammen, ich habe folgendes Problem: über die Aufgabenplanung wird mein PC jeden Tag um 18:00 Uhr heruntergefahren. Ich ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 1 TagInternet4 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 1 TagWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 2 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 2 TagenSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte28 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell24 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...

Microsoft
Übertragung von MS Volumenlizenzen
Frage von SherlockineMicrosoft19 Kommentare

Ich bin Angestellte in einer kleinen 10-köpfigen IT-Firma, die Netzwerklösungen, Telefonielösungen und Ähnliches anbietet. Im Sommer hatten wir einen ...