1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Batch Dateien umbennen mit führender 0

Discussion in 'Programmieren' started by bieri87, Aug 5, 2009.

Thread Status:
Not open for further replies.
  1. bieri87

    bieri87 Kbyte

    Hallo,

    ich benenne mehrere Dateien per Batch in einer for Schleife um und hänge zwei Zeichen an die Dateinamen vorn dran.

    Problem ist, dass die Schleife endlos wiederholt wird ... so das die zwei Zeichen immer wieder angehangen werden.

    Raus bekommen habe ich, dass das mit den führenden 0 der Dateien zusammenhängt. Alle Dateinamen haben vorne dran eine 0 stehen. Haben die Dateinamen eine andere Zahl oder Zeichen als 0 funktioniert es.

    Hat da jemand eine praktikable Lösung bzw. hat sich mit diesem Problem schonmal auseinander gesetzt.

    die Dateinamen z.b:
    0836364.txt
    0836365.txt
    0836366.txt
    0836367.txt
    0836368.txt

    und vorne dran soll ein 08 bzw. 09 .. abhängig vom erstellungsdatum, das kontne ich bereits umsetzten, es hapert allerdings nur an dem anhängen der Zeichen.


    mein Code:

    Code:
    @echo off
    
    ...
    set "tempFolder=G:\temp"
    
    for %%i in (%tempFolder%\2008\*.*) do ren "%%i" "08%%~ni%%~xi"
    for %%i in (%tempFolder%\2009\*.*) do ren "%%i" "09%%~ni%%~xi"
    ...
    
    
     
  2. VB-Coder

    VB-Coder Megabyte

    Bau dir eine IF Abfrage ein, die jeweils vor dem Umbenennen prüft ob die ersten beiden Zeichen des Dateinamens nicht 08 oder 09 sind.
     
  3. bieri87

    bieri87 Kbyte

    Kann ich jetzt nicht ganz nachvollziehen was das bringen soll ...

    vielleicht habe ich die Beispielhaften Dateinamen etwas ungünstig gewählt, hier nochmal etwas anders ...

    03216.txt
    04216.txt
    05275.txt

    und davor soll nochmal ein 08 bzw. 09

    0903216.txt
    0904216.txt
    0905275.txt

    aber wie gesagt, die Schleife läuft endlos durch, wegen den führenden nullen, so das ich folgende Ergebnisse erhalte:

    090909090903216.txt
    090909090904216.txt
    090909090905275.txt

    usw. bis ich es abbreche ...
     
  4. kazhar

    kazhar Viertel Gigabyte

    dein problem ist, dass die for schleife während sie durchläuft nach neuen datein sucht - und die findet sie weil du die alten umbenennst.

    ich würde die schleife in 2 teile aufspalten: zuerst den ordnerinhalt einlesen und dann erst umbenennen
    Code:
    dir /B [b]%tempFolder%\2008[/b]\* > %temp%\dirliste.tmp
    for /F "eol=* delims=*" %%i in (%temp%\dirliste.tmp) do ren "[b]%tempFolder%\2008[/b]\%%i" "08%%~ni%%~xi"
     
    Last edited: Aug 6, 2009
  5. bieri87

    bieri87 Kbyte

    Perfekt! mehr kann man dazu nicht sagen :D

    gute Idee !!

    aber wenn die Schleife auch neue Datei sucht und findet ...

    warum funktioniert das dann wenn die Dateien vorn keine 0 dran haben oÔ ala:

    598765.txt
    598766.txt
    598767.txt
    598768.txt

    funktioniert tadellos:
    09598765.txt
    09598766.txt
    09598767.txt
    09598768.txt

    Die Schleife wird einmal druchlaufen und alle Dateien umbenannt. Das ist mir immer noch nicht ganz geheuer ^^
     
  6. kazhar

    kazhar Viertel Gigabyte

    sortierreihenfolge möglicherweise?
     
  7. Urs2

    Urs2 Megabyte

    Vielleicht wird zu einem gewissen Zeitpunkt der Dateiname als Zahl interpretiert...
    ...und dann die führende Null weggelassen, aber als Leerzeichen behalten.

    Beim Befehl "Time" bei einstelligen Stunden wird angezeigt "7:38:56.123"
    In Wirklichkeit ist die führende Null aber drin, als Leerzeichen " 7:38:56.123"
    Zum Auslesen der Stunde muss man die ersten zwei Zeichen lesen, egal ob ein- oder zweistellig.

    Irgendwann dürfte hier der Interpreter dann darüber stolpern...

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page