Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Per Batch nach mehrere bestimmte Prozesse suchen???

Frage Entwicklung Batch & Shell

Mitglied: takitano

takitano (Level 1) - Jetzt verbinden

27.01.2013, aktualisiert 19:27 Uhr, 2415 Aufrufe, 12 Kommentare

Normalerweise verwende ich dafür folgendes:

01.
echo Es wird nach Prozess gesucht. 
02.
echo --------------------------------------------- >> Berichte\MyLog.txt 
03.
echo %date% %time:~0,8% Die Suche nach Prozess wird gestartet. >> Berichte\MyLog.txt 
04.
echo --------------------------------------------- >> Berichte\MyLog.txt 
05.
qprocess | find /i "kies.exe"  > NUL: 1>&2 
06.
if errorlevel 1 goto :starten 
07.
echo Es wurde Prozess "kies.exe" gefunden. >> Berichte\MyLog.txt 
08.
:starten 
09.
echo Prozess "kies.exe" wurde nicht gefunden. >> Berichte\MyLog.txt
Was ist aber, wenn ich nach weitere 10-15 bestimmte Prozessen suchen will (sagen wir: notepad.exe, ccc.exe, word.exe, excel.exe usw.) und positive Ergebnisse zu jedem einzelnem in der Textdatei "MyLog.txt" speichern will bzw. wenn kein einziges Prozess gefunden wird, dass dort eine allegemeine Meldung "Es wurden keine Prozesse gefunden" gespeichert wird?

Eventuell könnten die Namen von Prozessen in einer txt-Datei gespeichert sein, um diese leicht zu editieren. Aber wie ich das organisiere?

Danke,
takeshi.
Mitglied: bastla
27.01.2013, aktualisiert um 20:41 Uhr
Hallo takitano!

Etwa so (ungetestet):
01.
set "Log=Berichte\MyLog.txt" 
02.
set Prozesse="kies.exe" "notepad.exe" "ccc.exe" "word.exe" "excel.exe" 
03.
set "Meldung=Es wurden keine Prozesse gefunden." 
04.
 
05.
echo Es wird nach Prozessen gesucht. 
06.
>>"%Log%" echo ----------------------------------------------- 
07.
>>"%Log%" echo %date% %time:~0,8% Die Suche nach Prozessen wird gestartet. 
08.
>>"%Log%" echo ----------------------------------------------- 
09.
(for %%i in (%Prozesse%) do ( 
10.
    qprocess | find /i %%i  > NUL: 1>&2 && ( 
11.
        echo Es wurde Prozess %%i gefunden. 
12.
        set "Meldung=" 
13.
    ) || ( 
14.
        echo Prozess %%i wurde nicht gefunden. 
15.
16.
))>>"%Log%" 
17.
if defined Meldung >>"%Log%" echo %Meldung%
Wenn Du die Prozesse aus einer Textdatei einlesen willst, etwa so:
01.
set "Log=Berichte\MyLog.txt" 
02.
set "Prozesse=D:\Prozessliste.txt" 
03.
set "Meldung=Es wurden keine Prozesse gefunden." 
04.
 
05.
echo Es wird nach Prozessen gesucht. 
06.
>>"%Log%" echo ----------------------------------------------- 
07.
>>"%Log%" echo %date% %time:~0,8% Die Suche nach Prozessen wird gestartet. 
08.
>>"%Log%" echo ----------------------------------------------- 
09.
(for /f "usebackq delims=" %%i in ("%Prozesse%") do ( 
10.
    qprocess | find /i "%%i"  > NUL: 1>&2 && ( 
11.
        echo Es wurde Prozess "%%i" gefunden. 
12.
        set "Meldung=" 
13.
    ) || ( 
14.
        echo Prozess "%%i" wurde nicht gefunden. 
15.
16.
))>>"%Log%" 
17.
if defined Meldung >>"%Log%" echo %Meldung%
Grüße
bastla
Bitte warten ..
Mitglied: takitano
28.01.2013 um 17:04 Uhr
Danke Bastla!
Bitte warten ..
Mitglied: takitano
29.01.2013, aktualisiert um 17:48 Uhr
Hallo Bastla,
kann man deinen Batch ein bisschen ändern? Ich habe mich falsch ausgedruckt - ich will nicht die nicht gefundene Prozesse in der Log-Datei einzeln auflisten, sondern nur allgemein dort schreiben, dass "Es wurden keine Prozessen gefunden". Dafür aber soll auch im CMD-Fenster die gleiche Nachricht kommen (momentan wird sie dort nicht angezeigt). Falls es aber ein Prozess gefunden wird, soll alles so bleiben wie es schon schön ist. Mein Problem - ich habe die Liste mit fast 100 Prozessen und brauche es doch nicht, die nicht gefundene Prozesse einzeln aufzulisten.
Bitte warten ..
Mitglied: bastla
29.01.2013 um 17:51 Uhr
Hallo takitano!
ich will nicht die nicht gefundene Prozesse in der Log-Datei einzeln auflisten, sondern nur allgemein dort schreiben, dass "Es wurden keine Prozessen gefunden"
Falls es aber ein Prozess gefunden wird, soll alles so bleiben wie es schon schön ist.
Hört sich etwas widersprüchlich an - was genau ist denn nun Dein Wunschergebnis (in Datei und im Fenster)?

Grüße
bastla
Bitte warten ..
Mitglied: takitano
29.01.2013, aktualisiert um 19:12 Uhr
1) Falls 1 oder mehrere Prozess vorhanden sind:
- im CMD-Fenster werden die gefundene Prozesse durch qprocess automatisch angezeigt. Dort braucht man nichts tun.
- in der Log-Datei werden sie dann namentlich aufgelistet - es funktoniert jetzt schon.

2) Falls gar keine Prozesse gefunden wurden:
- im CMD-Fenster möchte ich die entsprechende Meldung haben "Es wurden keine Prozesse gefunden". Momentan wird in diesem Fall da nichts angezeigt.
- in der Log-Datei steht momentan in diesem Fall folgendes:

Prozess 1 wurde nicht gefunden.
Prozess 2 wurde nicht gefunden.
...
Prozess 99 wurde nicht gefunden.
Es wurden keine Prozesse gefunden.

Ich will diese Auflistung von 99 einzelnen Prozessen nicht, sondern, dass dort nur die letzte Zeile steht: "Es wurden keine Prozesse gefunden."

Grüße,
Takeshi
Bitte warten ..
Mitglied: bastla
29.01.2013 um 19:20 Uhr
Hallo takitano!

Dazu musst Du ja eigentlich nur den "else"-Zweig (realisiert über "||") weglassen und am Ende die Bildschirmausgabe ergänzen, also etwa:
01.
set "Log=Berichte\MyLog.txt" 
02.
set "Prozesse=D:\Prozessliste.txt" 
03.
set "Meldung=Es wurden keine Prozesse gefunden." 
04.
 
05.
echo Es wird nach Prozessen gesucht. 
06.
>>"%Log%" echo ----------------------------------------------- 
07.
>>"%Log%" echo %date% %time:~0,8% Die Suche nach Prozessen wird gestartet. 
08.
>>"%Log%" echo ----------------------------------------------- 
09.
(for /f "usebackq delims=" %%i in ("%Prozesse%") do ( 
10.
    qprocess | find /i "%%i"  > NUL: 1>&2 && ( 
11.
        echo Es wurde Prozess "%%i" gefunden. 
12.
        set "Meldung=" 
13.
14.
))>>"%Log%" 
15.
if defined Meldung ( 
16.
    >>"%Log%" echo %Meldung% 
17.
    echo %Meldung% 
18.
)
Grüße
bastla
Bitte warten ..
Mitglied: takitano
30.01.2013, aktualisiert um 13:15 Uhr
Das hat gut geklappt! Vielen Dank, bastla!

Und noch eine letze Frage: ich starte der Script von einem USB-Stick auf verschiedenen Rechner. Standardgemäß werden dabei die Programme "qprocess" und "find" auf dem Rechner benutzt.

Was ist wenn diese Programme aber auf dem Rechner fehlen bzw. manipuliert sind (z.B. "sysinfo" funktioniert auf einem XP Home-Rechner nicht, da es dort fehlt)? Deswegen will ich die originale Programme "qprocess" und "find" im Verzeichnis "XY" auf dem USB-Stick haben und nur meine originale Programme aus diesem Verzeichnis benutzen.

Ich habe bis jetzt folgendes versucht:

01.
start XY\qprocess | XY\find /i
01.
start XY\qprocess | find /i 
01.
 XY\qprocess | XY\find /i
01.
start XY\qprocess | start XY\find /i
Es klappte aber nicht.
Bitte warten ..
Mitglied: bastla
30.01.2013 um 17:46 Uhr
Hallo takitano!

Ob die Programme überhaupt starten, musst Du selbst testen - versuchen könntest Du jedenfalls
%~d0\XY\qprocess | %~d0\XY\find /i
Grüße
bastla
Bitte warten ..
Mitglied: takitano
30.01.2013, aktualisiert um 18:03 Uhr
Danke. Ja, sie starten, Allerdings kommt dann xx Mal Fehlermeldung (entsprechend der Anzall von Zeilen im "Prozessliste.txt") im CMD-Fenster:

{Message(): LoadString failed, Error 15105, (0x00003B01)}
{Message(): LoadString failed, Error 15105, (0x00003B01)}
{Message(): LoadString failed, Error 15105, (0x00003B01)}
{Message(): LoadString failed, Error 15105, (0x00003B01)}
{Message(): LoadString failed, Error 15105, (0x00003B01)}
{Message(): LoadString failed, Error 15105, (0x00003B01)}
{Message(): LoadString failed, Error 15105, (0x00003B01)}

und am Ende 1 gefundener Prozess:
pc-takitano console 1 2820 dwm.exe

In der Log.txt-Datei steht aber alles richtig (ohne oben genannten Fehlermeldungen):

30.01.2013 17:50:19 Die Suche nach Prozessen wird gestartet
Es wurde Prozess "dwm.exe" gefunden.
Bitte warten ..
Mitglied: takitano
31.01.2013 um 03:43 Uhr
Hallo Bastla,

{Message(): LoadString failed, Error 15105, (0x00003B01)}

ist es möglich diese Meldung im CMD-Fenster irgendwie unterdrucken?
Bitte warten ..
Mitglied: bastla
31.01.2013 um 08:51 Uhr
Hallo takitano!

Wenn ein
%~d0\XY\qprocess 2>nul
nicht funktioniert, vermutlich nicht ...

Grüße
bastla
Bitte warten ..
Mitglied: takitano
31.01.2013, aktualisiert um 09:32 Uhr
Trotzdem - DANKE! Anstatt qprocess habe ich tasklist genommen. Jetzt funktioniert alles.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Konfliktdateien in Dropbox suchen (4)

Frage von nobbi49 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...