107389
Goto Top

Variable überprüfen mit Platzhaltern

Hallo liebe Administratoren face-smile

Ich lade mir den Namen des Ordners, aus dem die Batch ausgeführt wird in die Variable %ordner%. Jetzt möchte ich überprüfen, ob der Ordnername mit einem bestimmten Schema übereinstimmt. (z.B. AS_0000_00_00 - AS und die Unterstriche sind immer am selben Platz, für die Nullen können Zahlen zwischen 0 und 9 stehen)
Bei meinem Code springe ich allerdings immer zu :gefunden, auch wenn das Schema vom Ordner überhaupt nicht passt...
...was mache ich falsch?


     PushD "%1"   
            for %%i in ("%cd:\=","%") do set "ordner=%%i"   
        PopD


        echo %ordner%|findstr /L /C:"AS[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]" || goto gefunden  
        goto nicht_gefunden
        
        :gefunden
        echo gefunden
        pause
        goto weiter
        :nicht_gefunden
        echo nicht gefunden
        pause
        :weiter
        pause



Vielen Dank schonmal für die Hilfe face-smile

Content-Key: 187500

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

Printed on: April 20, 2024 at 00:04 o'clock

Member: bastla
bastla Jul 05, 2012 updated at 07:46:42 (UTC)
Goto Top
Hallo ne0nymous und willkommen im Forum!


... daher eher so:
PushD "%1"   
for %%i in ("%cd:\=","%") do set "ordner=%%i"   
PopD

echo %ordner%|findstr "AS_[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]">nul || goto nicht_gefunden  
        
echo gefunden
pause
goto weiter

:nicht_gefunden
echo nicht gefunden
pause

:weiter
pause
Grüße
bastla
Mitglied: 107389
107389 Jul 05, 2012 at 09:51:10 (UTC)
Goto Top
Hallo bastla. Danke für deinen Code, hat soweit super funktioniert (war AS0000_00_00, ohne Unterstrich)

Jetzt stehe ich aber vor nem anderen Problem.
Wenn die Variable / der Ordnername länger ist (z.B. "AS0000_00_00 (data)" , springt er trotzdem zu :gefunden.
Ist es möglich, dass man nach der Auswertung vom findstr alles aus der Variablen löscht, was nicht mit dem Schema übereinstimmt, dass man danach nurnoch "AS0000_00_00" darin stehen hat?

Grüße
Member: bastla
bastla Jul 05, 2012 at 10:02:45 (UTC)
Goto Top
Hallo ne0nymous!
springt er trotzdem zu :gefunden.
In meinem Ansatz gibt es kein ":gefunden".
Um den gesamten String zu vergleichen, kannst Du den Schalter "/x" hinzufügen, um nur den Anfang/das Ende zu überprüfen gibt es "/b" bzw "/e" ...
Ist es möglich, dass man nach der Auswertung vom findstr alles aus der Variablen löscht, was nicht mit dem Schema übereinstimmt, dass man danach nurnoch "AS0000_00_00" darin stehen hat?
Dazu brauchst Du ja nur einen entsprechend (12 Zeichen) langen Teilstring zu bilden (siehe "set /?"):
set "ordner=%ordner:~,12%"
Grüße
bastla
Mitglied: 107389
107389 Jul 05, 2012 updated at 10:33:45 (UTC)
Goto Top
Zitat von @bastla:
In meinem Ansatz gibt es kein ":gefunden".

Ich meinte natürlich dass er dann "echo gefunden" ausführt.


        PushD "%1"   
            for %%i in ("%cd:\=","%") do set "ordner=%%i"   
        PopD
            cd ..

Das ist mein jetziger Code

echo %ordner%
pause

        echo %ordner%|findstr "AS[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]" || goto nicht_gefunden  
        set "ordner=%ordner:~,12%"  
        echo gefunden
        pause
        goto gefunden
        :nicht_gefunden
        set "ordner=%ordner:~,12%"  
        echo nicht gefunden
        pause
        echo %ordner%
        pause
        :gefunden
        pause
        echo %ordner%
        pause

Ich hab jetzt nach dem "set "ordner=%ordner:~,12%" immer ein " am Anfang der Variable und die letzte Ziffer abgeschnitten.
Wie bring ich des " weg? Hab "set "ordner=%ordner:1,~,12%" probiert aber dann geht garnichmehr...

Vielen Dank!
Member: bastla
bastla Jul 05, 2012 at 10:42:32 (UTC)
Goto Top
Hallo ne0nymous!

Du könntest zwar ganz genau
set "ordner=%ordner:~0,12%"
schreiben, aber es wird auch in diesem Fall natürlich der Inhalt von %ordner% den Ausschlag geben - versuch es daher mit folgender Zeile 3:
for %%i in ("%cd:\=","%") do set "ordner=%%~i"
damit wird der Ordnername nicht mehr in Anführungszeichen in die Variable geschrieben ...

Grüße
bastla
Mitglied: 107389
107389 Jul 05, 2012 at 15:46:55 (UTC)
Goto Top
Wunderbar. Hat einwandfrei funktioniert. Vielen Dank!