Deus Figendi: Best Practice: Parameter für Dateiname und -format

Guten Morgen,
ich habe vor einer Weile ein Kommandozeilenprogramm geschrieben, welches unter anderem mehrere Dateiausgaben unterstützt.
Im Moment habe ich es so gestaltet, dass man zwei Parameter übergibt einmal alle Dateinahmen und alle Formate (es gibt noch viele weitere Parameter, aber um die zwei geht es). Derzeit so:
-target ausgabedatei.ext andereausgabedatei.foo datei.bar -format type1 type2 type3
(außerdem gibt es Aliase für -target nämlich -t -output und -o)
Wenn Anzahl der Formate und Ausgabedateien ungleich ist werden die Formate mit ihrer File-Extension bzw. einem Default-Wert "aufgefüllt" oder die Dateinamen-Liste mit "stdout".

Soweit, so gut, funktioniert auch, aber ich bin nicht sicher ob diese Trennung und das Auffüllen bei einer Diskrepanz so erm intuitiv ist.
Ich könnte mir ebenso vorstellen, dass man sowas eingibt:
-output ausgabedatei.ext type1 andereausgabedatei.foo type2 datei.bar type3
also das Format immer direkt dran schreibt. Oder immer abwechselnd mit Benennung des Parameters:
-o ausgabedatei.ext -format type1 -o andereausgabedatei.foo -format type2 -o datei.bar -format type3
(-f ist anderweitig belegt, könnte man aber ggf. auch ändern).

oder man dreht das Spielchen um und sagt "dieses Format für alle nachfolgend genannten Dateien":
-format type1 -output ausgabedatei.ext andereausgabedatei.foo -format type2 -output datei.bar stdout

Es sind sicher auch X weitere Varianten denkbar, was weiß ich eine Übergabe einer CSV-Tabelle mit Dateinamen und Formaten. Ggf. auch aus einer Datei heraus (wobei man den Parameter anders nennen müsste, ich muss ja irgendwie unterscheiden ob das eine Quell- oder eine Zieldatei ist ^^ wobei auch da könnte man sie einfach einlesen und schauen ob sie passend formatiert ist).

Also was meint ihr ist die beste Praxis zur Übergabe dieser Daten und was ist die beste Variante ungleich viele Eingaben zu handeln?

Anmerkung: Es geht um Playlisten und derzeit unterstütze ich die Formate:
pls m3u xspf txt(Dateiliste getrennt mit \n) csv rss html(Linkliste) htm(Liste von audio- und video-Elementen) xhtml(Linkliste)

--
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
  1. Guten Morgen!

    Die Variante, die ich bisher gesehen habe, sah folgendermaßen aus: -o dateiname.endung:format[, dateiname2.endung2:format2]...

    Da der Doppelpunkt in Dateinamen normalerweise nicht erlaubt ist, sollte das ganz gut funktionieren. Ansonsten könnte das Format nach Möglichkeit aus der Endung erkannt oder ein Default verwendet werden.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
    1. Die Variante, die ich bisher gesehen habe, sah folgendermaßen aus: -o dateiname.endung:format[, dateiname2.endung2:format2]...

      Mhm interessant, also so ähnlich wie man Ports in URLs einfügt oder Benutzernamen von Kennwörtern in ftp-Links trennt.

      Ansonsten könnte das Format nach Möglichkeit aus der Endung erkannt oder ein Default verwendet werden.

      Ja das tu' ich ohnehin beides, wenn eine Dateiendung da ist wird sie verwendet (ich könnte/sollte vielleicht prüfen ob sie auch als format valide ist) und wenn sie nicht da ist verwende ich xspf als default.
      Aber man soll das ja überschreiben können.

      Aber das ist schonmal ein nette Idee mit den Doppelpunkten.

      --
      sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
    2. Hallo,

      Da der Doppelpunkt in Dateinamen normalerweise nicht erlaubt ist, ...

      sagt wer?
      Linux scheint mit Doppelpunkten in Dateinamen jedenfalls kein Problem zu haben. Ich habe das vor einiger Zeit am Beispiel erlebt: Ich wollte eine Datei vom Linux- auf einen Windows-PC kopieren. Leider meldete Ubuntu bei diesem Versuch immer, dass die Zieldatei nicht erstellt werden könnte. Natürlich habe ich erst die Berechtigungen für das Verzeichnis auf dem Windows-Rechner geprüft, vielleicht wäre die Zielpartition ja auch fast voll oder so. Erst nach einigen Minuten habe ich "zufällig" festgestellt, dass der Dateiname einen Doppelpunkt enthielt. Ubuntu fand das völlig natürlich. Windows natürlich nicht.

      So long,
       Martin

      --
      Lehrer:  Wieviel ist die Hälfte von 8?
      Schüler: Kommt drauf an. Waagrecht 0 und senkrecht 3.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hallo,

        Da der Doppelpunkt in Dateinamen normalerweise nicht erlaubt ist, ...

        sagt wer?

        Die Dokumentationen verschiedener Dateisysteme...

        Gruß, LX

        --
        RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.