kostenloser Webspace werbefrei: lima-city


in Batch splitten

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    HI also ich habe eine txtDatei a_data.txt mit Hunderten von Pfadangaben
    C:ordner1\ordner2\ordner3\ordner4\datei.endungx
    C:ordner1\ordner2\ordner3\ordner4\datei2.endungx
    C:ordner1\ordner2\ordner3\ordner4\datei3.endungx


    Mittels for-schleife kann ich ja jetzt jeden einzelne Zeile und somit jeden Pfad auslesen:
    for /f "tokens=*" %%i in (a_data.txt) do(
    echo %%i
    )


    das klappt alles fehlerfrei aber jetzt möchte ich,aus jeder Zeile
    1) Den Pfad (ohne letzes \)
    2) Den Dateinamen (ohne Endung) (ohne .)
    3) Die Dateiendung (ohne .)

    BSP:
    C:ordner1\ordner2\ordner3\ordner4\datei.endungx
    
    C:ordner1\ordner2\ordner3\ordner4
    datei
    endungx


    Ich möchte das mit batch machen, weil viele Abläufe die vorher in meiner Datei stehen, einfach am einfachsten mit batch zu realisieren waren.

    Ich hoffe ihr könnt mir da helfen!

    P.S: das ist nicht böse gemeint, und ich freue mich über jede Hilfe die ich bekommen kann, doch bitte lest euch erst mal alles in Ruhe durch und postet dann, sonst bringt mich das nicht weiter!

    MVG
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. probirs mal mit "dir".

    hier alle möglichen parameter:
    DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
      [/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4]
    
      [Laufwerk:][Pfad][Dateiname]
                 Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.
    
      /A         Listet Dateien mit angegebenen Attributen auf.
      Attribute   D Verzeichnisse        R Schreibgeschützte Dateien
                  H Versteckte Dateien   A Zu archivierende Dateien
                  S Systemdateien        - vorangestellt kehrt die Bedeutung um
      /B         Einfaches Format (keine Kopfdaten, keine Zusammenfassung).
      /C         Zeigt das Tausendertrennzeichen bei Dateigrößen an (Standard-
                 einstellung). Verwenden Sie /-C, um das Tausendertrennzeichen
                 nicht anzuzeigen.
      /D         Gleich wie Breitformat, jedoch nach Spalten sortiert.
      /L         Verwendet Kleinschreibung.
      /N         Neues, langes Listenformat (Dateinamen auf der rechten Seite).
      /O         Gibt die Liste sortiert aus.
      Folge       N Name (alphabetisch)           S Größe (kleinere zuerst)
                  E Erweiterung (alphabetisch)    D Datum/Zeit (ältere zuerst)
                  G Verzeichnisse zuerst          - vorangestellt kehrt die
                                                    Reihenfolge um
      /P         Pausiert nach jeder vollen Bildschirmseite.
      /Q         Gibt den Besitzer der Datei aus.
      /S         Listet Dateien und alle Unterverzeichnisse auf.
      /T         Bestimmt welche Zeit verwendet wird (nur für NTFS).
      Zeit        C  Erstellung
                  A  Letzter Zugriff
                  W  Letzter Schreibzugriff
      /W         Verwendet Breitformat für die Auflistung.
      /X         Zeigt die Kurznamen für Dateien mit Nicht-8Punkt3-Namen an.
                 Das Format ist das gleiche wie bei /N, wobei der Kurzname vor
                 dem Langnamen eingefügt wird. Wenn kein Kurzname vorhanden ist,
                 werden Leerzeichen angezeigt.
      /4         Zeigt das Jahr vierstellig an.
    
    Optionen können in der Umgebungsvariablen DIRCMD voreingestellt werden.
    "-" vor einer Option setzt die Voreinstellung außer Kraft, z.B. DIR /-W.


    um deine suchergebnisse in eine datei zu leiten:
    dir [parameter] > [datei]

    beispiel:
    dir "C:" /B > "C:\test\test.txt"
  4. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Ich denke, dieses Tutorial bietet dir alle notwendigen Möglichkeiten, deinen String zu zerfrickeln:
    http://www.dostips.com/DtTipsStringManipulation.php

    Edit: ich wußte nicht, dass DOS so mächtig ist :biggrin:

    Beitrag zuletzt geändert: 13.3.2010 11:06:31 von burgi
  5. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Na toll also erstmal danke

    @burgi
    auf der Seite war ich schon... und naja kein Wort verstanden (nicht weil ich kein Englisch kann, sondern weils einfach meiner Meinung nach nicht so gut beschrieben ist)
    Außerdem kann ich den String eh nicht splitten, weil ich ja garnicht die Anzahl der Ordner und Unterordner bis zum Dateinamen und Seiner Endung stehen. Ich könnte nach '.' splitten aber das würde mir nur die Endung einbringen und den Pfad mit dem Dateinamen. Ich brauche aber den Dateinamen! Also das mit dem Splitten soll eher so gemeint sein, dass ich mit einer Funktion einfach meine 3 Werte auslesen kann :
    1) Den Pfad (ohne letzes \)
    2) Den Dateinamen (ohne Endung) (ohne .)
    3) Die Dateiendung (ohne .



    @rb-online
    ich habs so versucht:
    for /f "tokens=*" %%i in (a_data.txt) do (
    echo %%i
    dir %%i > b_data.txt
    )


    dann sagt er mir, dass er die Datei nicht finden kann. Außerdem klappt dir nur bei Pfadangeben, wobei ich in 55o ja nen Pfad hab. doch selbst dann könnte ichmit dir nicht
    1) Den Pfad (ohne letzes \)
    2) Den Dateinamen (ohne Endung) (ohne .)
    3) Die Dateiendung (ohne .
    auslesen.

    MVG
  6. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    So, hab' das gefunden, und auch getestet:
    http://stackoverflow.com/questions/636381/what-is-the-best-way-to-do-a-substring-in-a-batch-file

    ich habe eine Text-Datei zum testen mit dem Inhalt
    C:\test1\test2\justatest.txt
    D:\xtest1\xtest2\blabla.gif


    mit diesem Batch-Code:
    @echo off
    cls
    
    for /f "tokens=*" %%i in (test.txt) do (
    echo Angaben zur Datei:
    echo filename: %%~ni
    echo file extension: %%~xi
    echo drive Letter: %%~di
    echo file path: %%~pi
    echo fertig!
    echo.
    )


    bekam ich diesen Output:
    Angaben zur Datei:
    filename: justatest
    file extension: .txt
    drive Letter: C:
    file path: \test1\test2\
    fertig!
    
    Angaben zur Datei:
    filename: blabla
    file extension: .gif
    drive Letter: D:
    file path: \xtest1\xtest2\
    fertig!
    
    
    C:\>


    Du musst halt das nicht ausgeben, sondern in eine Variable umlenken, solltest du damit Dateien kopieren wollen, oder was auch immer.

    Besser? :thumb:
  7. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Besser?

    richtig hamma! Läuft perfekt zuverlässig und ohne viel Code!!
    Genau so hab ichs mir bestenfalls vorgestellt!!
    Vielen vielen Dank!!
    MVG
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!