47674
Goto Top

Batch - IF variable beinhaltet Zeichenfolge

Prüfen, ob eine Variable eine festgelegte Zeichenfolge beinhaltet.

Hallo zusammen,

ich möchte gerne überprüfen, ob eine Buchstabenfolge in einer Variablen vorkommt. Die Variable heißt currentfile und enthält einen Dateinamen mit Dateityp-Erweiterung. Wenn es sich um ein PDF handelt (also %currentfile% beinhaltet .pdf) soll ein Befehl ausgeführt werden.

Mit
IF NOT %currentfile%==.pdf echo Dies ist kein PDF
kann ich zwar prüfen, ob currentfile und .pdf 100%ig übereinstimmen, jedoch nicht, ob .pdf nur ein Teil von currentfile ist.

Ist das irgendwie möglich?

Vielen Dank un Gruß
daedalus

Content-Key: 123920

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

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

Member: Biber
Biber Sep 01, 2009 at 08:40:19 (UTC)
Goto Top
Moin daedalus,

wenn die Formulierung der Aufgabenstellung leicht (aber vermutlich zulässig) variiert wird, dann lässt sich doch sagen
"Geprüft werden soll, ob die Endung der Datei ".pdf" ist.

Und das wiederum geht ja mit den "abgeleiteten" dynamischen Variablen der FOR-Anweisungen.

Beispiel am CMD-Prompt (die Zeile mit ">" am Anfang ist die eingegebene Zeile)
>for %i in (h*.*) do @if /i "%~xi"==".pdf" @echo "%i" ist ein PDF-File.
"Hein Blöd 2009-123456.pdf" ist ein PDF-File.
"Hund Katze Maus 2008-122332.pdf" ist ein PDF-File.
Übertragen auf Dein Konstrukt im Batch:
...
FOR %%i in ("%currentfile%") DO IF /i "%%~xi" NEQ ".pdf" echo "%%i" ist kein PDF.  

Grüße
Biber
Member: bastla
bastla Sep 01, 2009 at 09:11:02 (UTC)
Goto Top
... um aber auch auf die Fragestellung "Teilstring prüfen" einzugehen:
echo %currentfile%|findstr /i "\.pdf">nul||echo ".pdf" nicht enthalten
Kleine Besonderheit: Damit der Punkt als solcher interpretiert wird, muss er per vorangestelltem "\" gekennzeichnet werden - siehe "findstr /?".


Grüße
bastla
Mitglied: 47674
47674 Sep 01, 2009 at 10:33:30 (UTC)
Goto Top
Danke, es funktioniert!!! Genau das habe ich gesucht face-smile