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, 8929 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

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 ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 1 TagAusbildung25 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 3 TagenSpeicherkarten3 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 3 TagenSicherheit1 Kommentar

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 4 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Ausbildung
Linux-Ausstieg in Niedersachsen - Windows statt Bugfix
Information von StefanKittelAusbildung25 Kommentare

Sind ja nur Steuergelder

Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware19 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...

Windows 10
Windows 10 Spracherkennung - Eure Meinungen?
Frage von honeybeeWindows 1014 Kommentare

Hallo, wollte heute mal aus Neugier die Spracherkennung unter Windows 10 (Version 1803) ausprobieren und war mehr wie enttäuscht. ...

Windows Server
Zertifikat RemoteDesktop hinterlegen
gelöst Frage von Green14Windows Server12 Kommentare

Hallo zusammen. ich habe mehrere Server (WinSrv 2016). Die Server sind in keiner Domäne und keine Terminalserver. Ich verbinde ...