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

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

For-Schleifen 8

gelöst Frage von IleiesBatch & Shell5 Kommentare

Hallo zusammen, Inzwischen habe ich einen großen Teil des For-Schleifen Tutorials gelesen, verstanden und umgesetzt. Einige Threads haben sich ...

Batch & Shell

For Schleife kaputt?

gelöst Frage von Peter32Batch & Shell5 Kommentare

Hallo, ich finde den Fehler nicht irgendwie bekomme ich ständig denselben Inhalt in "Name.txt" und kann dann nicht weiterarbeiten ...

Batch & Shell

Wieder For-Schleifen

gelöst Frage von IleiesBatch & Shell1 Kommentar

Hallo zusammen, Wieder zurück zu den FOR-SCHLEIFEN: Wie kann ich das Ganze kürzen?

Neue Wissensbeiträge
Viren und Trojaner

Staatstrojaner soll auch per Einbruch installiert werden können

Information von transocean vor 1 TagViren und Trojaner2 Kommentare

Moin, Bundesinnenminister Horst Seehofer will dem Verfassungsschutz Wohnungseinbrüche erlauben, um den geplanten Staatstrojaner zu installieren. Gruß Uwe

Windows 7
Win7 Update scheitert KB4512506
Information von infowars vor 1 TagWindows 7

Falls jemand auch das Problem hat mit dem: Monatliches Sicherheitsqualitätsrollup für Windows 7 für x64-basierte-Systeme (KB4512506) Das scheint mit ...

Humor (lol)
Wenn hacken nach hinten los geht
Information von em-pie vor 2 TagenHumor (lol)5 Kommentare

Moin, weil heute Freitag ist, nachfolgender kurzer Artikel zum schmunzeln:) l+f: NULL ist ein notorischer Falschparker

Windows Update
Windows: August 2019 Patchday-Probleme
Information von kgborn vor 3 TagenWindows Update3 Kommentare

Ich kippe mal einige kurze Informationen hier rein - vielleicht hilft es Betroffenen. Die August 2019-Updates für Windows haben ...

Heiß diskutierte Inhalte
Switche und Hubs
Glasfaser-Anschluss Telekom muss verteilt werden
Frage von cansoniSwitche und Hubs29 Kommentare

Vorweg: Bin nur Anwender und kein Experte Die Situation: Der Vermieter stellt einen Glasfaseranschluss in der Wohnung bereit. Wir ...

Ubuntu
Download manchmal langsam oder komplette Abbrüche bzw. Videos spielen nicht bis zum Schluss
Frage von stefanstpUbuntu18 Kommentare

Immer wieder berichten unsere Kunden, dass Downloads abbrechen oder super langsam sind oder Videos nicht abgespielt werden können bzw. ...

Hyper-V
VMs von Hyper-V auf externer Festplatte
Frage von SnowbirdHyper-V18 Kommentare

Hallo, ich möchte gerne von VirtualBox auf Hyper-V umsteigen und würde auch gerne weiterhin meine VMs auf der externen ...

Festplatten, SSD, Raid
SSDs durch Lagerung ohne Strom nach 6 Monaten defekt?!?
gelöst Frage von GlobetrotterFestplatten, SSD, Raid16 Kommentare

Moin Gemeinde Ich hatte gerade nen Trauerspiel Habe hier etliche NAS-Geräte herumfahren welche ich mal auf die Seite gelegt ...