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-ID: 187500

Url: https://administrator.de/forum/variable-ueberpruefen-mit-platzhaltern-187500.html

Ausgedruckt am: 23.04.2025 um 17:04 Uhr

bastla
bastla 05.07.2012 aktualisiert um 09:46:42 Uhr
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
107389
107389 05.07.2012 um 11:51:10 Uhr
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
bastla
bastla 05.07.2012 um 12:02:45 Uhr
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
107389
107389 05.07.2012 aktualisiert um 12:33:45 Uhr
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!
bastla
bastla 05.07.2012 um 12:42:32 Uhr
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
107389
107389 05.07.2012 um 17:46:55 Uhr
Goto Top
Wunderbar. Hat einwandfrei funktioniert. Vielen Dank!