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, 8923 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 10

Vbs getobject auf per Task gestartete Anwendung

Frage von schauanWindows 104 Kommentare

Hallo zusammen, ich starte per Task nachts in abgemeldetem Zustand ein Script, welches Excel startet. Das Script startet dann ...

Peripheriegeräte

Kontrolliertes auslesen von Speicherkarten

Frage von -s-v-o-Peripheriegeräte3 Kommentare

Guten Morgen zusammen Bei uns sind einiges an Speicherkarten von Digicam,… im Unternehmen unterwegs. Damit die Mitarbeiter an die ...

Batch & Shell

Fenstertitel von anderen Tasks per batch auslesen

gelöst Frage von NetMareBatch & Shell3 Kommentare

Hallo zusammen, ich starte aktuell einige weitere cmd Dateien aus einer (nennen wir sie) Master-batch heraus. Diese zusätzlichen cmds ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 1 TagBackup1 Kommentar

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 3 TagenHumor (lol)7 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 3 TagenExchange Server9 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 4 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
E-Mail
Deutsche e-Mail Adresse auf iPhone in Katar. Nur Probleme
Frage von vanTastE-Mail15 Kommentare

Moin, ich habe hier in Deutschland auf einem Exchange 2013 eine e-Mail Adresse (name@domain.de) für einen Kollegen in Katar ...

Windows Server
Domäne beitreten nicht möglich, unter VMWare windows Server 2016 Core
Frage von AmanuelWindows Server11 Kommentare

Ich habe auf meinem Mac unter VMWare Windows Server 2016 Core und Windows Server 2016 Desktopversion installiert. Beide Systeme ...

RedHat, CentOS, Fedora
OTRS 5 kann keine Mails mehr abrufen
gelöst Frage von opc123RedHat, CentOS, Fedora11 Kommentare

Hallo, OTRS kann keine Mails mehr abrufen. Verschicken ja. Dadurch kommen keine Tickets mehr rein. Gibt es Anlaufpunkte was ...

Windows Server
Server 2016 Autotiering Storage Space
Frage von HenereWindows Server11 Kommentare

Servus, ich habe jetzt ein StorageSpace auf einem Server 2016 in Betrieb zum Testen. 1x M2 mit 512GB (970pro) ...