kriegstreiber
Goto Top

In einer Batch variable die Datei extension ermitteln ?

Servus, wieder einmal stehe ich vor einem Dilemmer wo die Lösung wahrscheinlich naheliegend ist, ich aber trotzdem nicht drauf komme. Es geht um ein Batch Script mit dem ich mittels Drag and Drop etwaige Dateien bearbeiten will. Im Grunde funktioniert ja alles, die gedropte Datei ist ja automatisch Variable %~1. Nun soll das Script aber nicht einfach drauf loslegen, sondern nur zur nächsten Marke gehen , wenn a) nur eine Datei und kein Verzeichnis abgelegt wird und b) die Datei muss den Dateityp *.txt haben. Und da weiss ich nicht wie ich das anstellen soll.

Sprich, anders ausgedrückt:

if %~1 is *.txt goto START

Ich habe schon einige Ideen gehabt mit find z.B in der Variable nach ".txt" zu suchen, das wäre aber nur eine Notlösung. Am liebsten wäre mir, das er wirklich nur weitergeht, wenn der Dateityp wirklich eine *.txt Datei ist.

Für Hilfe bedanke ich mich im vorraus.

Content-Key: 331170

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

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

Member: rubberman
Solution rubberman Mar 04, 2017 at 15:12:59 (UTC)
Goto Top
Hallo Kriegstreiber.

In der Hilfe zu CALL ( call /? ) findet sich die Antwort auf deine Frage.

if /i "%~x1"==".txt" ...  

Grüße
rubberman
Member: Kriegstreiber
Kriegstreiber Mar 04, 2017 at 15:29:12 (UTC)
Goto Top
Hahahahaha, das CALL das bewerkstelligt, im Leben wäre ich da nie draufgekommen, ich bin im Kopf schon etliche FOR Schleifen durchgegangen, dann kann ich mein "Pfusch" Script hier jetzt verbannen face-smile . Ich danke vielmals, ohne Witz NIE wäre ich darauf gekommen.

SET FILETYP=%~1
if "%FILETYP%"=="%FILETYP:.TXT=%" (  
    goto NIXTXT
) else (
    goto START
)
Member: rubberman
rubberman Mar 04, 2017 at 15:36:41 (UTC)
Goto Top
NIE wäre ich darauf gekommen
Eigentlich ist das sogar ziemlich naheliegend. Mit CALL rufst du andere Batchdateien oder Subroutinen auf, wobei du Argumente übergeben kannst. Die Erklärung, wie mit diesen Argumenten umzugehen ist, sollte sich also dort wiederfinden ...

Grüße
rubberman
Member: Kriegstreiber
Kriegstreiber Mar 04, 2017 at 21:56:44 (UTC)
Goto Top
Ich habe einfach vergessen, das es eine Variable gibt, die mir nur die Dateiendung anzeigt :D. Umgekehrt benutz ich das sehr oft, also die Dateiendung abschneiden.