jschneider
Goto Top

if wert in variable dann - wenn nicht - if anderer wert in variable dann

Hallo,


innerhalb eines Scriptes erhalte ich einen Inhalt aus Variable %%n. %%n kann diverse Buchtaben RWECMF (Netware dateisystemrechte) enthalten.

Ich möchte jetzt abhängig von diesen Buchstaben entscheiden, ob es ein Lese- oder Schreibrecht ist

da ich den kompletten Vor und Nachbau bereits in batch (cmd) gemacht habe suche ich auch eine passende BatchLösung. If instr funktioniert ja nur unter VBS - richtig ?

Die Logik müsste so aussehen ..

Wenn in %%N ein W enthalten dann set Variable Gruppentyp=Schreibrechte

Wenn in %%N ein kein W enthalten , jedoch ein R dann set Variable Gruppentyp=Leserechte

Content-ID: 97476

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

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

60730
60730 22.09.2008 um 11:18:26 Uhr
Goto Top
Servus,

da ich den kompletten Vor und Nachbau bereits in batch (cmd) gemacht habe
würde ich es schön finden - wenn du uns diesen Teil einfach mal in
 
Blöcken mitgibst face-wink

Ansonsten vesrtehe ich deine Frage so
if %n% =="R" then echo Leserechte

... oder meinst du %n% kann eine beliebige Buchstaben Kombination aus "RWECMF" usw haben?
Gruß
jschneider
jschneider 22.09.2008 um 11:49:35 Uhr
Goto Top
Zitat von @60730:
... oder meinst du %n% kann eine beliebige Buchstaben Kombination aus
"RWECMF" usw haben?
Gruß

Ja Genau - und sobald ein W enthalten ist soll halt ein Schreibrecht vorrausgesetzt werden, wenn W nicht enthalten ist soll geschaut werden, ob wenigstens ein R enthalten ist um in diesem Fall von einem Leserecht auszugehen

also am liebsten hätte ich ja aus VBS den "if instr", mit dem ich reinschaue und je nach enthaltenem wert weiter arbeiten kann


Den Ansatz, den ich gerade verfolge funktioniert nicht so wie ich möchte. Desweiteren habe ich das Gefühl viel zu Umständlich zu Arbeiten
 for /f  %%x in ('echo %%n^|findstr "R"') do (  
  echo       -  %%n - leserechte vorhanden
  echo          
  pause
  set qGruppentyp=lesen 
  )
 
  for /f  %%x in ('echo %%n^|findstr "W"') do (  
                            rem echo %%n|findstr "W">nul &&   
  echo       -  %%n - schreibrechte vorhanden
  pause
  set qGruppentyp=schreiben 
  )

echo %qGruppentyp%

Nach dem Motto: schau erstmal ob ein R enthalten ist und definiere den Typ. Und nur wenn die gleiche Gruppe doch noch W-Rechte haben sollte definiere den Typ durch einen anderen Wert

blöd blöd

zumal ich es als if benötige
jschneider
jschneider 22.09.2008 um 12:11:58 Uhr
Goto Top
echo %%n|findstr "W"
if %Errorlevel%==0 (
echo Schreibrechte gefunden
) ELSE (

echo %%n|findstr "R"
if %Errorlevel%==0 (
echo Leserechte gefunden
)
)


bisher das beste was mir eingefallen ist
Biber
Biber 22.09.2008 um 12:45:09 Uhr
Goto Top
Moin jschneider,

ich versuch mich mal vom CMD-Prompt aus ranzutasten...
>set NWReitz="RW"  

(=12:37:45  D:\temp=)
>for %i in (R W E C M F) do @echo  "%NWReitz%"|find /i "%i">nul || echo %i is nich drin  
E is nich drin
C is nich drin
M is nich drin
F is nich drin

(=12:37:55  D:\temp=)
>for %i in (R W E C M F) do @echo  "%NWReitz%"|find /i "%i">nul && echo %i is drin  
R is drin
W is drin

Diese Mimik in einer Batchdatei weitergesponnen (Annahme. in %NWReitz% sind die NetWare-Rechte):
for %%i in (R W E C M F) do set "%%i_Recht=0"  
REM nach dieser Schleife ist R_Recht=0; W_Recht=0; ....F_Recht=0 ...
for %%i in (R W E C M F) do (
       echo  "%NWReitz%"|find /i "%%i">nul && Set "%%i_Recht=1"  
)
If %R_Recht% == 1 machdies
If %W_Recht% == 1 machdas
If %E_Recht% == 1 call E_RechtKrams
....
[ungetestete Montagsskizze]

Natürlich kannst Du jeweils direkt der Variablen-"Erkennung" sofort in einen Call-Block springen:
...
for %%i in (R W E C M F) do (
         echo  "%NWReitz%"|find /i "%%i">nul && Call: %%i_Verarbeitung  
)
:goto :eof
:R_Verarbeitung
....<bla>
goto :eof

:W_Verarbeitung
....<bla>
goto :eof

Grüße
Biber
jschneider
jschneider 22.09.2008 um 14:50:03 Uhr
Goto Top
Zitat von @Biber:
[ungetestete Montagsskizze]

ich schmeiß mich weg face-wink

der Ansatz gefällt mir !