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

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

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

rubberman
Lösung rubberman 04.03.2017 um 16:12:59 Uhr
Goto Top
Hallo Kriegstreiber.

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

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

Grüße
rubberman
Kriegstreiber
Kriegstreiber 04.03.2017 um 16:29:12 Uhr
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
)
rubberman
rubberman 04.03.2017 um 16:36:41 Uhr
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
Kriegstreiber
Kriegstreiber 04.03.2017 um 22:56:44 Uhr
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.