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

gelöst Problem mit FOR-Schleife

Mitglied: Larz

Larz (Level 2) - Jetzt verbinden

04.02.2010, aktualisiert 09:59 Uhr, 3641 Aufrufe, 6 Kommentare

Guten Morgen an alle,

gestern hatte ich eine Frage zum Auslesen des Dienst-Status auf einem entfernten, wo mir Torsten helfen konnte.
Nun hab ich das Ding versucht auszubauen und habe ein Problem mit einer FOR-Schleife (die ich grundsätzlich leider nie so ganz verstanden habe).

Es geht um den Bereich Massenprüfung. Ich möchte die Prüfung für jeden Client machen, der in einer extern vorgehaltenen Liste "Computer.txt" steht.
Leider bricht mir das Script genau an der Stelle ab und ich befürchzte dass es was mit meiner FOR-Schleife zu tun hat.

Kann mir da mal jemand unter die Arme greifen?

01.
cls 
02.
 
03.
set /p Dienstname=Bitte Dienstname (nicht Anzeiguename!) eingeben:  
04.
 
05.
:AbfrageEinzelOderMasse 
06.
set /p EinzelOderMasse="Möchten Sie eine (E)inzel- oder (M)assenprüfung (mit Liste) durchführen?" 
07.
if /i %EinzelOderMasse% == e goto :Einzelpruefung 
08.
if /i %EinzelOderMasse% == m goto :Massenpruefung 
09.
cls 
10.
@echo Falsche Eingabe 
11.
goto :AbfrageEinzelOderMasse 
12.
 
13.
:Massenpruefung 
14.
for /f %%i in ("Computernamen.txt") do ( 
15.
@echo Prüfe %Computer2Check% 
16.
for /f "tokens=4"  %%a in ('sc \\%%i query %dienstname% ^| find "STATE"') do set Status=%%a  
17.
18.
if not %STATUS%==RUNNING goto :ServiceStopped 
19.
EXIT 
20.
 
21.
:Einzelpruefung 
22.
Set /p Computer2Check=Bitte Comuternamen eingeben:   
23.
for /f "tokens=4"  %%a in ('sc \\%Computer2Check% query %dienstname% ^| find "STATE"') do set Status=%%a  
24.
if not %STATUS%==RUNNING goto :ServiceStopped 
25.
@echo Status des Dienstes "%Dienstname%" ist %Status% 
26.
pause 
27.
 
28.
:ServiceStopped 
29.
@echo %Computer2Check%;%time%;%date% >>\\filer-a\protokolle$\%date%_ServiceStopped.log
Vielen Dank!

Gruß
Lars
Mitglied: bastla
04.02.2010 um 10:13 Uhr
Hallo Larz!

Ändere die Zeile 14 auf:
for /f "usebackq" %%i in ("Computernamen.txt") do (
Grüße
bastla
Bitte warten ..
Mitglied: Larz
04.02.2010 um 10:32 Uhr
Hoi Bastla,

birngt leider keine Veränderung. Habe mittels Pause gesehen (ohne deine Ergänzung), dass anstatt den EInzelnen Namen in der Liste in der Variable %%i der Dateiname Computer.txt steht

Hm...

Gruß
Lars
Bitte warten ..
Mitglied: bastla
04.02.2010 um 11:49 Uhr
Hallo Larz!
abe mittels Pause gesehen (ohne deine Ergänzung), dass anstatt den EInzelnen Namen in der Liste in der Variable %%i der Dateiname Computer.txt steht
Solange Du das "usebackq" nicht angibst, wird "Computer.txt" nicht als Dateiname, sondern als Text interpretiert ...

... mit "usebackq" sollte es aber klappen.

Grüße
bastla
Bitte warten ..
Mitglied: 5t8d1e
04.02.2010 um 12:33 Uhr
Hallo,

schau dir das einmal an:
01.
@echo off 
02.
cls  
03.
set /p Dienstname=Bitte Dienstname (nicht Anzeiguename!) eingeben:   
04.
 
05.
:AbfrageEinzelOderMasse  
06.
 
07.
set /p EinzelOderMasse="Möchten Sie eine (E)inzel- oder (M)assenprüfung (mit Liste) durchführen?"  
08.
if /i %EinzelOderMasse% == e goto :Einzelpruefung  
09.
if /i %EinzelOderMasse% == m goto :Masse 
10.
cls  
11.
@echo Falsche Eingabe  
12.
goto :AbfrageEinzelOderMasse  
13.
 
14.
:Einzelpruefung  
15.
Set /p Computer2Check=Bitte Comuternamen eingeben:    
16.
for /f "tokens=4"  %%a in ('sc \\%Computer2Check% query %dienstname% ^| find "STATE"') do set Status=%%a   
17.
if not %STATUS%==RUNNING call :ServiceStopped %computer2check% 
18.
@echo Status des Dienstes "%Dienstname%" ist %Status%  
19.
pause  
20.
 
21.
 
22.
:Masse 
23.
for /f %%a in (Computernamen.txt) do ( 
24.
	echo Prüfe %%a 
25.
	for /f "tokens=4"  %%b in ('sc \\%%a query %dienstname% ^| find "STATE"') do if not %%b==RUNNING  call :ServiceStopped %%a 
26.
27.
EXIT  
28.
 
29.
 
30.
  
31.
:ServiceStopped 
32.
@echo %1;%time%;%date% >>\\filer-a\protokolle$\%date%_ServiceStopped.log
Bitte warten ..
Mitglied: Biber
04.02.2010 um 13:03 Uhr
Moin 5t8d1e,

Sauber. Als winzigkleine Ergänzung...
... vielleicht noch nach Zeile 19 oder 20 (jedenfalls zwischen Block ":Einzelpruefung" und ":Masse") ein "GoTo :eof" ?

@Larz
Und wenn überhaupt ein EXIT in einem Batch... dann sollte es in allen denkbaren Fällen ( User bricht ab, Einzelverarbeitung , Massenverarbeitung) verwendet werden, nicht nur in einem UseCase.

Grüße
Biber
Bitte warten ..
Mitglied: Larz
04.02.2010 um 14:09 Uhr
Servus,

danke für die Unterstützung. Ich hab ziemlich viel Zeit mit den "" verplämpert, hab jetzt aber auch ne funktionierende Lösung und schon etwas ausgebaut:

01.
REM Dieses Script erm%oe%glicht es bei einem oder mehreren PCs den Status eines Dienstes  
02.
REM zu %ue%berpr%ue%fen. Ist der Dienst gestoppt, wird dies in ein Log geschrieben oder angezeigt 
03.
 
04.
@ECHO OFF & SETLOCAL  
05.
 
06.
REM Hier werden Variablen für die Umlaute definiert, damit Sie nachher im Text richtig angezeigt werden (ANSI/ASCI-Problem) 
07.
chcp 1252>nul 
08.
set ue=ü 
09.
set ae=ä 
10.
set oe=ö 
11.
set Uue=Ü 
12.
set Aae=Ä 
13.
set Ooe=Ö 
14.
set ss=ß 
15.
chcp 850>nul 
16.
 
17.
REM Hier wird die Farbe der Fenster bestimmt 
18.
COLOR 0E 
19.
 
20.
CLS 
21.
 
22.
 
23.
@echo ==================================================  
24.
@echo #           C H E C K   S E R V I C E            # 
25.
@echo ================================================== 
26.
@echo. 
27.
@echo Dieses Script erm%oe%glicht es bei einem oder  
28.
@echo mehreren PCs den Status eines Dienstes zu %ue%ber- 
29.
@echo pr%ue%fen. Ist der Dienst gestoppt, wird dies in  
30.
@echo ein Log geschrieben oder bei Einzelabfrage im  
31.
@echo Script angezeigt 
32.
@echo. 
33.
set /p Dienstname=Bitte Dienstname (nicht Anzeigename!) eingeben:  
34.
@echo. 
35.
:AbfrageEinzelOderMasse 
36.
set /p EinzelOderMasse="M%oe%chten Sie eine (E)inzel- oder (M)assenpr%ue%fung (mit Liste) durchf%ue%hren?" 
37.
if /i %EinzelOderMasse% == e goto :Einzelpruefung 
38.
if /i %EinzelOderMasse% == m goto :Massenpruefung 
39.
cls 
40.
@echo Falsche Eingabe 
41.
goto :AbfrageEinzelOderMasse 
42.
 
43.
:Massenpruefung 
44.
for /f "usebackq" %%i in ("Computernamen.txt") do ( 
45.
	@echo Pr%ue%fe %%i 
46.
	for /f "tokens=4"  %%a in ('sc \\%%i query %dienstname% ^| find "STATE"') do ( 
47.
		set Status=%%a 
48.
		if %%a==STOPPED @echo %%i;%dienstname%;%%a;%time%>>\\filer-a\protokolle$\%date%_ServiceStopped.log 
49.
50.
51.
PAUSE 
52.
 
53.
:Einzelpruefung 
54.
Set /p Computer2Check=Bitte Comuternamen eingeben:   
55.
for /f "tokens=4"  %%a in ('sc \\%Computer2Check% query %dienstname% ^| find "STATE"') do set Status=%%a  
56.
if not %STATUS%==RUNNING @echo %Computer2Check%;%dienstname%;%status%;%time% >>\\filer-a\protokolle$\%date%_ServiceStopped.log 
57.
@echo Status des Dienstes "%Dienstname%" ist %Status%
Funktioniert beides prima
Danke nochmal an alle Beteiligten!!!

Gruß
Larz
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Problem bei einer For Schleife
gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo Ich komme nicht dahinter ist sicher nur ein kleines Problem, aber es wird keine Ausgabe gemacht Eigentlch willich ...

Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Batch & Shell

FOR Schleife mit LOOP und nachfolgender FOR Schleife

gelöst Frage von miczarBatch & Shell6 Kommentare

Hallo zusammen, ich habe ein Problem mit einem Batchfile. Situation: im Netzwerk ist kein WINS mehr vorhanden und so ...

Batch & Shell

Problem mit kombination aus IF ELSE und FOR Schleife.

gelöst Frage von UragusBatch & Shell12 Kommentare

Hallo, An sich möchte ich ein Script schreiben was eine DFSR-Replikation prüfen soll. Mit Batch Scripten habe ich leider ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 8 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 14 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Visual Studio
Singletone Objekt in Datei speichern
gelöst Frage von it4baerVisual Studio13 Kommentare

Hallo, ist es möglich ein Singleton-Objekt zu "serialisieren" und dann in eine Datei zu speichern um es später wieder ...