coax
Goto Top

Leerzeichen aus einer Variable entfernen

Moinsen,

ich versuche gerade ein Leerzeichen aus einer Variable zu entfernen und es gelingt mir einfach nicht, ich kann das nicht kontrollieren.
Bitte nicht über den Programmierstil beschweren ;)

Es geht um folgende Variablen (Array)

!Status[%i%]!


Schön wäre das entfernen des Leerzeichens gleich beim einlesen, kann ich die Variable nicht um -1 kürzen?

Hier der Teil zum einlesen

set "i=0"  
for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.15 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.16 -q') do (  
set Status[!i!]=%%f & set /a "i+=1" / Batch  
)

Lässt sich natürlich wegen dem Leerzeichen am Ende nicht vergleichen
if !Status[%i%]!==3 set "ST=0"   

und die Ausgabe ist in Ihrer Formatierung auch zerstört, da überall zu viele Leerzeichen sind...

Hier noch mein bisheriger Code, es geht um die Abfrage über SNMP von den Festplatten aus dem Raid für Check_MK

@echo off
setlocal enabledelayedexpansion
set "i=0"  

for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.2 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.3 -q') do (  
set Port[!i!]=%%f & set /a "i+=1"  
)
set "i=0"  
for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.5 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.6 -q') do (  
set Drive[!i!]=%%f & set /a "i+=1"  
)
set "i=0"  
for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.6 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.7 -q') do (  
set Vendor[!i!]=%%f & set /a "i+=1"  
)
set "i=0"  
for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.7 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.8 -q') do (  
set GB[!i!]=%%f & set /a "i+=1"  
)
set "i=0"  
for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.12 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.13 -q') do (  
set Err[!i!]=%%f & set /a "i+=1"  
)
set "i=0"  
for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.15 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.16 -q') do (  
set Status[!i!]=%%f & set /a "i+=1" / Batch  
)
set "i=0"  
for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.17 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.18 -q') do (  
set SN[!i!]=%%f & set /a "i+=1"  
)

set "len=!i!"  
set "i=0"  
set "ST=2"  

:loop
if !Status[%i%]!==3 set "ST=0"   
if !Status[%i%]!==4 set "ST=0"  
if !Status[%i%]!==1 set "Dis=unknow"  
if !Status[%i%]!==2 set "Dis=noDisk"  
if !Status[%i%]!==3 set "Dis=online"  
if !Status[%i%]!==4 set "Dis=ready"  
if !Status[%i%]!==5 set "Dis=failed"  
if !Status[%i%]!==6 set "Dis=rebuilding"  
if !Status[%i%]!==7 set "Dis=hotspareGlobal"  
if !Status[%i%]!==8 set "Dis=hotspareDedicated"  
if !Status[%i%]!==9 set "Dis=offline"  
if !Status[%i%]!==10 set "Dis=unconfiguredFailed"  
if !Status[%i%]!==11 set "Dis=formatting"  
if !Status[%i%]!==12 set "Dis=dead"  

echo !ST! !Port[%i%]! - Status: !Status[%i%]!\\nAnzeigename: !Vendor[%i%]!\\nTyp: !Drive[%i%]!\\nSeriennummer: !SN[%i%]!\\nGröße: !GB[%i%]! GB\\nFehler: !Err[%i%]!
set /a "i+=1"  
if %i% neq %len% goto:loop
endlocal

Content-Key: 384001

Url: https://administrator.de/contentid/384001

Ausgedruckt am: 19.03.2024 um 04:03 Uhr

Mitglied: Kraemer
Kraemer 21.08.2018 aktualisiert um 12:21:20 Uhr
Goto Top
Moin,

warum der Krampf per Batch? Mach das doch mit der Powershell!

Gruß
Mitglied: Coax
Coax 21.08.2018 um 12:31:50 Uhr
Goto Top
Check_MK könnte tatsächlich ps1 Scripte ausführen.
Für Linux war das relativ einfach und ich dachte bei Windows ist das ein leichtes das nachzustellen...

Sonst muss ich noch umschwenken... face-sad
Mitglied: Kraemer
Kraemer 21.08.2018 um 12:36:49 Uhr
Goto Top
Mitglied: Coax
Coax 21.08.2018 um 12:54:59 Uhr
Goto Top
Sei mir nicht Böse :D

Nein... habe ich aktuell keine Lust drauf mich da rein zu fuchsen face-smile
Mitglied: Kraemer
Kraemer 21.08.2018 um 13:01:12 Uhr
Goto Top
Na gut.

Sei du mir auch nicht böse: Batch mag ich nicht, und dein Code ist nen Graus. Da habe ich keine Lust drauf. face-smile
Mitglied: Coax
Coax 21.08.2018 um 13:18:22 Uhr
Goto Top
face-smile

habe das Rätsel auf eine andere Art und Weise gelöst, nicht schön aber selten

for /f "tokens=*" %%f in ('SnmpWalk.exe -r:localhost -c:public -os:.1.3.6.1.4.1.231.2.49.1.5.2.1.15 -op:.1.3.6.1.4.1.231.2.49.1.5.2.1.16 -q') do (  
set conv=%%f & set "Status[!i!]=!conv: =!" & set /a "i+=1"  
Mitglied: Kraemer
Kraemer 21.08.2018 um 13:27:38 Uhr
Goto Top
Zitat von @Coax:

face-smile

habe das Rätsel auf eine andere Art und Weise gelöst,
freut mich!
Du solltest dir aber wirklich mal die PS ansehen. Damit geht einem sowas erheblich leichter von der Hand.
Mitglied: Coax
Coax 21.08.2018 aktualisiert um 13:38:27 Uhr
Goto Top
Ja wenn die Zeit mal da ist, das habe ich mir vor ein paar Jahren schon einmal gesagt ;)

Danke dir !