1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Dateiname in Datum vom Vortag umwandeln

Dieses Thema im Forum "Sonstige Sprachen" wurde erstellt von mstut, 18. Mai 2014.

  1. mstut

    mstut Grünschnabel

    Hallo

    Ich betreibe seit ein paar Jahren eine Private Wetterstation und Archiviere Bilder.
    Hier für müssen einige Bilder umbenannt werden.
    Ich verwende seit Jahren eine Batch Datei, die eine Datei in das Aktuelle Datum ändert, die ich im Internet gefunden/bekommen habe, jedoch muss die Funktion geändert werden.
    Leider habe ich keine Ahnung wie das geht.
    Darum Bitte ich um Hilfe, das mir jemand eine fertige Datch Datei zur Verfügung stellt.
    Wenn Heute der 2014-05-18 ist, dann muss die Datei yesterday.gif in den Vortag 2014-05-17.gif umbenannt werden. Ich habe im Internet schon gefunden, das Monats - Ende und - Anfang und ein Schaltjahr berücksicht werden muss.
    mfg
    Michael

    Code (Text):
    1. set object=c:aktuell.gif
    2.  
    3. for /f "skip=5 tokens=1,4" %%a in ('dir %object%') do (
    4. set Dateidatum=%%a
    5. set DateinameAlt=%%b
    6. goto loopend
    7. )
    8. :loopend
    9. echo %Dateidatum%
    10. echo %DateinameAlt%
    11.  
    12. set year=%Dateidatum:~6,4%
    13. echo %year%
    14.  
    15. set month=%Dateidatum:~3,2%
    16. echo %month%
    17.  
    18. set day=%Dateidatum:~0,2%
    19. echo %day%
    20.  
    21. set appen=%year%-%month%-%day%
    22. echo %appen%
    23.  
    24. set pre=%DateinameAlt:~0,-4%
    25. echo %pre%
    26.  
    27. set add=%DateinameAlt:~-4%
    28. echo %add%
    29.  
    30. set DateinameNeu=%appen%%add%
    31. echo %DateinameNeu%
    32.  
    33. ren %DateinameAlt% %DateinameNeu%
    34. end
     
  2. ComFreek

    ComFreek Mod | @comfreek Moderator

    Hallo mstut,

    Batch wurde schon seit einiger Zeit durch ein viel mächtigeres Werkzeug ersetzt: PowerShell.

    Beispielsweise braucht man für dein Anliegen nur 4 Zeilen Code:
    Code (PowerShell):
    1. $yesterday = (Get-Date).AddDays(-1)
    2. $newFilename = $yesterday.ToString("yyyy-MM-dd")
    3. Rename-Item "yesterday.gif" ($newFileName + ".gif")
    PowerShell wird seit Windows Vista nativ mitgeliefert. Für XP, welches man sowieso nicht mehr verwenden sollte, gibt es ein Nachrüstpaket.
     
    Zuletzt bearbeitet: 18. Mai 2014
    saftmeister gefällt das.
  3. mstut

    mstut Grünschnabel

    Hallo

    Vielen Dank für die Antwort
    Ich kenne weder DOS richtig noch PoweShell.
    Ich habe Windows 7 im Einsatz.
    Aber wie setzte ich das jetzt um?
    Ich habe deinen Code in eine Batch Datei getan und gestartet, aber nichts passiert.
    Was mache ich falsch?
    mfg
    Michael
     
  4. sheel

    sheel I love Asm Administrator

  5. ComFreek

    ComFreek Mod | @comfreek Moderator

    PowerShell ist etwas anderes als Batch. Deswegen speichere meinen Code in eine Datei mit der Endung .ps1.

    Dann mache einfach einen Rechtsklick auf die Datei innerhalb des Windows Explrorers und wähle "Mit PowerShell ausführen" aus.

    Wenn es dir eine Fehlermeldung ausgibt oder nicht klappt, dann musst du zuerst die ExecutionPolicy richtig setzen.
    Dazu musst du PowerShell mit Administratorrechten ausführen und dann folgenden Befehl eingeben und [Enter] drücken:
    Code (PowerShell):
    1. Set-ExecutionPolicy RemoteSigned
     
  6. mstut

    mstut Grünschnabel

    Hallo

    Danke für die Antwort
    Das hatte ich in zwischen schon gefunden
    das Problem ist aber das ich mit dem Programm Z-Cron arbeite um Aktionen auszuführen und das kann nur BAT Dateien
    ich habe aber den Code von sheel in eine Batch Datei geschrieben und so Funktioniert es auch
    das würde mir schon reichen, aber das Fenster mit der Bach Datei schließt sich nicht von alleine, die ps1 Datei wird aber abgearbeitet
    gerade habe ich noch gesehen, wenn die Datei yesterday.gif nicht existiert gibt es eine Fehlermeldung und das Fenster bleibt offen
    mfg
    Michael
     
  7. ComFreek

    ComFreek Mod | @comfreek Moderator

    Entferne die Option -noexit aus dem PowerShell-Aufruf innerhalb der Batch-Datei. (@sheel Gab es einen Grund, -noexit hier in diesem Fall zu nutzen?)

    Was soll geschehen, wenn yesterday.gif noch nicht existiert?
     
  8. mstut

    mstut Grünschnabel

    Hallo

    Super und vielen Dank
    das ist jetzt nicht mehr da, lag am -noexit
    mfg
    Michael
     
  9. ComFreek

    ComFreek Mod | @comfreek Moderator

    Naja, der Fehler aber trotzdem generiert! Du siehst ihn nur nicht, weil sich das Powershell-Fenster sofort schließt.

    Ich würde es so umschreiben, da man nie weiß, ob das Ignorieren später einem das Bugsuchen erschweren wird:
    Code (PowerShell):
    1. $yesterday = (Get-Date).AddDays(-1)
    2. $oldFilename = 'yesterday.gif'
    3. $newFilename = $yesterday.ToString("yyyy-MM-dd")
    4. if (Test-Path $oldFilename -pathType leaf) {
    5.     Rename-Item $oldFilename ($newFileName + ".gif")
    6. }
    7. else {
    8.     # Do nothing!
    9.     # This behavior is intended.
    10. }
     
    Zuletzt bearbeitet: 18. Mai 2014
  10. mstut

    mstut Grünschnabel

    Hallo

    Danke
    ich habe das so geändert, morgen werde ich sehen ob es funktioniert
    das ganze sieht so aus wie PHP
    mfg
    Michael
     
  11. sheel

    sheel I love Asm Administrator

    @ComFreek, wegen noexit: Kein Grund, nur stupides Copy&Paste :rolleyes:
     
Die Seite wird geladen...