MudGuard: Win2K Command line: Dateinamenmanipulationen

Hi,

ich bräuchte mal Hilfe bei einem Batch-File für die Win2K-Commandline-Interpreter (incorrectly known as DOS-Box).

Der/Die/Das Batch bekommt einen Parameter, und zwar einen Filenamen, z.B. bla.xml
Ich bräuchte jetzt aber Zugriff auf den (variablen) Teil vor dem .xml

Wie komme ich also an das "bla"?

Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.

Sollte vor dem bla noch ein Pfad vorhanden sein (also z.B. Parameter = d:\blubb\bla.xml), dann muß dieser dabei erhalten bleiben.

Kann mir bitte jemand einen Schubs in die richtige Richtung geben?

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  1. Hallo Andreas,

    Hast Du auf dem Rechner Perl oder PHP oder sowas? Dann koenntest Du die fuer den Job einspannen. Die WSH waere auch eine Moeglickeit. Mit einer reinen 'DOS'-Loesung kann ich Dir leider auch nicht helfen

    Gruß,

    Dieter

    1. Hi,

      Hast Du auf dem Rechner Perl oder PHP oder sowas?

      Leider nein.

      Die WSH waere auch eine Moeglickeit.

      Dazu ist mein Kenntnis-Stand: ich weiß, daß es das gibt.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hallo Andreas,

        Die WSH waere auch eine Moeglickeit.
        Dazu ist mein Kenntnis-Stand: ich weiß, daß es das gibt.

        dann kann man auch was draus machen... Man könnte das mal so in ein .js-Datei schreiben und ausprobieren:

        var laSplit;
          var loFSO    = WScript.createObject("Scripting.FileSystemObject");
          var lcSource = new String(WScript.Arguments(0));

        laSplit  = lcSource.split('.');   // laSplit[0] ist der Teil vor dem .
          lcTarget = laSplit[0].concat('.csv');
          loSource = loFSO.GetFile(lcSource);
          loSource.Copy(lcTarget);

        Ohne Gewähr - ich habe es nicht getestet. Natürlich ist das ohne allen Fehler- und Ausnahmenbehandlungsluxus - aber wem erzähle ich das?

        hth Robert

  2. hi,

    Der/Die/Das Batch bekommt einen Parameter, und zwar einen Filenamen, z.B. bla.xml
    Ich bräuchte jetzt aber Zugriff auf den (variablen) Teil vor dem .xml

    ob das mit den einfachen batch-befehlen und ihrem eingeschränkten funktionsumfang machbar ist?

    Kann mir bitte jemand einen Schubs in die richtige Richtung geben?

    Dieters Schubs in richtung WSH würde ich schon für eine recht gute richtung halten.

    Wie komme ich also an das "bla"?

    Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.

    Sollte vor dem bla noch ein Pfad vorhanden sein (also z.B. Parameter = d:\blubb\bla.xml), dann muß dieser dabei erhalten bleiben.

    erlaubt es die aufrufende stelle ggf., das ganze in zwei parameter aufzuteilen?

    dateipfad/-name = d:\blubb\bla.xml
    =>
    parameter #1 = d:\blubb\bla
    parameter #2 = xml (oder auch .xml)

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hi,

      erlaubt es die aufrufende stelle ggf., das ganze in zwei parameter aufzuteilen?

      Gewünscht wird:
      Das Batchfile liegt als Icon auf dem Desktop.

      Der User zieht die xml-Datei per dragndrop auf dieses Icon.

      Damit bekommt der Batch den Dateipfad als Parameter (das funktioniert soweit).

      Die Aufteilung auf Aufruf-Seite ist also nicht möglich.

      Ich werd es vermutlich so lösen, daß ich die Extension nicht ersetze, sondern einfach eine weitere Extension anhänge:

      Aus
      d:\blubb\bla.xml
      wird dann halt
      d:\blubb\bla.xml.csv
      erzeugt statt
      d:\blubb\bla.csv

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. hi,

        Ich werd es vermutlich so lösen, daß ich die Extension nicht ersetze, sondern einfach eine weitere Extension anhänge:

        Aus
        d:\blubb\bla.xml
        wird dann halt
        d:\blubb\bla.xml.csv
        erzeugt statt
        d:\blubb\bla.csv

        copy blah.xml blah.xml.csv  // oder wie auch immer die neue datei erstellt wird
        ren *.*.csv *.csv

        kann aber natürlich nur dann funktionieren, wenn der dateiname selbst keinen punkt enthält, also nur name.endung

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  3. Hallo,

    als Variante der Idee von wahsaga würde ich vorschlagen, den Aufruf der Batchdatei so zu ändern, dass der Name ohne Extension übergeben wird. Die Endung ".xml" hängt die Batchdatei dann fest an.

    Das geht natürlich nur dann, wenn die Extension immer dieselbe ist.

    Ciao,

    Martin

    1. Hi,

      als Variante der Idee von wahsaga würde ich vorschlagen, den Aufruf der Batchdatei so zu ändern, dass der Name ohne Extension übergeben wird. Die Endung ".xml" hängt die Batchdatei dann fest an.

      Siehe Antwort auf wahsaga: der Aufruf wird durch DragNDrop geschehen, die XML-Datei wird auf die Batchdatei gezogen.

      Ich werd vermutlich (falls nicht noch jemand mit ner genialen Idee kommt) die neue Extension anhängen.

      Das geht natürlich nur dann, wenn die Extension immer dieselbe ist.

      Das wäre zwar der Fall, aber der Aufruf per DragNDrop läßt das Abschneiden des .xml nicht zu ;-)

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Tach nochmal,

        Das geht natürlich nur dann, wenn die Extension immer dieselbe ist.

        Das wäre zwar der Fall, aber der Aufruf per DragNDrop läßt das Abschneiden des .xml nicht zu ;-)

        Stimmt. Aber von Dreck & Drops war im Ausgangsposting leider noch keine Rede. ;)

        So long,

        Martin

  4. Hi Andreas,

    lege Dir mal eine vbs-Datei mit folgendem Inhalt an:

    set objArgs = Wscript.Arguments

    For i = 0 to objArgs.Count - 1
      strText = strText & objArgs.item(i)
    Next

    strA = left(strText, len(strText)-4)

    MsgBox strA, ,WScript.ScriptName

    Ziehe dann mal eine Datei auf diese vbs-Datei.

    Vielleicht hilft Dir das etwas.

    Viele Grüße

    Jörg

    1. Hi,

      set objArgs = Wscript.Arguments
      For i = 0 to objArgs.Count - 1
        strText = strText & objArgs.item(i)
      Next
      strA = left(strText, len(strText)-4)

      Da es nur 1 Parameter geben wird (DragNDrop), hab ich dann also nach

      set objArgs = Wscript.Arguments
      strText = objArgs.item(0)
      strA = left(strText, len(strText)-4)

      in strA den gekürzten Dateinamen.

      Dann muß ich nur noch rausfinden, wie ich damit mein bla.bat aufrufe ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hi Andreas,

        sieh Dir mal Shell an.

        Viele Grüße

        Jörg

  5. Moin.

    Der/Die/Das Batch bekommt einen Parameter,

    Aber, aber. Seit Imbissdeutsch für Fortgeschrittene wissen wir doch: es muß _Den_ Batch heißen.

    Gruß Frank

    P.S. Mehr gibts im Videoarchiv von NDR Extra 3.

  6. Hallo,

    Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.

    Vielleicht hilft: Wie in einer Zeichenkette Zeichen entfernt/ersetzt werden koennen.

    MfG, Thomas

    1. Hi,

      Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.
      Vielleicht hilft: Wie in einer Zeichenkette Zeichen entfernt/ersetzt werden koennen.

      Sieht mächtig kompliziert aus.
      Und das ersetzt wohl eher alle Vorkommen von x durch y.

      Ich hab inzwischen zusammen mit Jörg ne funktionierende Lösung (DragNDrop auf ein .vbs statt auf den Batch, das .vbs manipuliert den Namen und ruft dann das .bat mit dem gekürzten Namen auf, an den ich dann je nach Bedarf .xml bzw. .csv anhänge.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.