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

Frage Entwicklung Batch & Shell

Mitglied: imkrl001

imkrl001 (Level 1) - Jetzt verbinden

13.11.2007, aktualisiert 15.11.2007, 8890 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
Windows Server
Task mit Batch startet, aber kein Effekt
gelöst Frage von DirmhirnWindows Server2 Kommentare

Hi! ich versuche nun seit einer Woche immer wieder eine Batch auf einem W2k8 R2 Server als Task zu ...

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

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 23 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...