FOR-Schleife liest Werte nur bis zum ersten Leerzeichen ein
Hallo zusammen,
ich habe ein Scipt, dass aus einer Textdatei Zeilenweise den Namen von Diensten ausliest und deren Status prüft:
Jetzt ist es so dass es einen Dienst gibt, der dummerweise "Object Store Sowieso 6.0" heißt.
Das Script liest mir immer nur "ObjectStore" als Dienstnamen aus und findet dazu natürlich nichts.
Nun habe ich versucht mit dem Zusatz dem Script beizubringen, dass er das Leerzeichen nicht als Ende betrachten soll. Oder bin ich da falsch gewickelt??
Danke für eure Hilfe
Gruß
Larz
ich habe ein Scipt, dass aus einer Textdatei Zeilenweise den Namen von Diensten ausliest und deren Status prüft:
set SERVERNAME=Server1
@echo __________________________________________>>"%LogfilePath%\servercheck.log"
@echo DIENSTE AUF %SERVERNAME%>>"%LogfilePath%\servercheck.log"
@echo.>>"%LogfilePath%\servercheck.log"
for /f %%i in (%SERVERNAME%_Dienste.txt) do (
for /f "tokens=4" %%a in ('sc \\%SERVERNAME% query %%i ^| find "STATE"') do call :checkit %%i %%a
)
goto :eof
:checkit Parameter1=Dienst Parameter2=Status
if /i "%2" NEQ "RUNNING" @echo %1 %2 >>"%LogfilePath%\servercheck.log"
if /i "%2" EQU "RUNNING" @echo %1 %2 >>"%LogfilePath%\servercheck.log"
goto :eof
echo.
echo.
echo.
Jetzt ist es so dass es einen Dienst gibt, der dummerweise "Object Store Sowieso 6.0" heißt.
Das Script liest mir immer nur "ObjectStore" als Dienstnamen aus und findet dazu natürlich nichts.
Nun habe ich versucht mit dem Zusatz
delims=
Danke für eure Hilfe
Gruß
Larz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 146535
Url: https://administrator.de/contentid/146535
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
12 Kommentare
Neuester Kommentar
@Dani
Grüße
bastla
Des Weiteren ist der : bei checkIT zu viel. Du möchtest zur Sprungmarke springen und keine an dieser Stelle erzeugen.
Einspruch! "call
" braucht die vollständige Sprungmarke inkl ":" ...Grüße
bastla
@bastla
Right... ich blick's bald nicht mehr vor lauter Programmiersprachen. Hab's verbessert...
Grüße,
Dani
Right... ich blick's bald nicht mehr vor lauter Programmiersprachen. Hab's verbessert...
Grüße,
Dani
Hallo Larz!
Also bei mir erzeugt
folgenden Ablauf (der zumindest hinsichtlich der eigentlichen Fragestellung für mich vernünftig aussieht):
Bitte beachten: Auch bei der Übergabe von "%%i" als Parameter werden die Anführungszeichen benötigt, da bei Leerzeichen in "%%i" der Wert von "%%a" nicht als %2 im Unterprogramm ankommt ...
Grüße
bastla
Also bei mir erzeugt
@echo on & setlocal
set SERVERNAME=Server1
@echo __________________________________________>>"%LogfilePath%\servercheck.log"
@echo DIENSTE AUF %SERVERNAME%>>"%LogfilePath%\servercheck.log"
@echo.>>"%LogfilePath%\servercheck.log"
for /f "delims=" %%i in (%SERVERNAME%_Dienste.txt) do (
for /f "tokens=4" %%a in ('sc \\%SERVERNAME% query "%%i" ^| find "STATE"') do call :checkit "%%i" %%a
)
goto :eof
:checkit Parameter1=Dienst Parameter2=Status
if /i "%2" NEQ "RUNNING" @echo %1 %2 >>"%LogfilePath%\servercheck.log"
if /i "%2" EQU "RUNNING" @echo %1 %2 >>"%LogfilePath%\servercheck.log"
goto :eof
D:\TEMP>set SERVERNAME=Server1
D:\TEMP>for /F "delims=" %i in (Server1_Dienste.txt) do (for /F "tokens=4" %a in
('sc \\Server1 query "%i" | find "STATE"') do call :checkit "%i" %a )
D:\TEMP>(for /F "tokens=4" %a in ('sc \\Server1 query "ObjectStore Sowieso 6.0"
| find "STATE"') do call :checkit "ObjectStore Sowieso 6.0" %a )
D:\TEMP>goto :eof
Grüße
bastla