Dateinamen per Batch umbenennen
Hallo zusammen,
Ich möchte gerne per Script (Batch?) Datei ein File umbennenen und zwar so, dass es immer den Monat als Filenamen nimmt.
Beispiel.
"Log.txt" soll in "October08.txt" umbennent werden.
Dieses Script wir dann einmal im Monat per Task automatisch ausgeführt werden.
Vielen Dank für Eure Hilfe
Gruss
JOML
Ich möchte gerne per Script (Batch?) Datei ein File umbennenen und zwar so, dass es immer den Monat als Filenamen nimmt.
Beispiel.
"Log.txt" soll in "October08.txt" umbennent werden.
Dieses Script wir dann einmal im Monat per Task automatisch ausgeführt werden.
Vielen Dank für Eure Hilfe
Gruss
JOML
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 99384
Url: https://administrator.de/contentid/99384
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo JOML!
Habe eben Deinen geposteten Batch getestet und kann das Problem nicht nachvollziehen. Ein Fehler könnte sich zwar ergeben, wenn die Zieldatei "October08.txt" bereits existiert - allerdings würde die Meldung dann
lauten.
Grüße
bastla
P.S.: Verwende bitte beim Posten von Batches die ...
Habe eben Deinen geposteten Batch getestet und kann das Problem nicht nachvollziehen. Ein Fehler könnte sich zwar ergeben, wenn die Zieldatei "October08.txt" bereits existiert - allerdings würde die Meldung dann
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Grüße
bastla
P.S.: Verwende bitte beim Posten von Batches die ...
Hallo JOML!
Wie sieht denn bei Dir die Ausgabe von %date% aus? Die Zerlegung oben geht von einer (dt.) Schreibweise der Art
oder (W2000)
aus. Der Monat wird mit 2 Zeichen ab (von rechts gezählt) der Position 7 ermittelt.
Wenn Du die Zeile 4 im Batch entsprechend anpasst, sollte der Rest funktionieren.
Grüße
bastla
P.S.: Und (bevor Du fragst): Nein, ich möchte auch in Zukunft nicht schon vorher wissen, auf welchem System in welcher Sprache ein Batch laufen soll - wo bliebe da die Spannung?
Wie sieht denn bei Dir die Ausgabe von %date% aus? Die Zerlegung oben geht von einer (dt.) Schreibweise der Art
16.10.2008
Do 16.10.2008
Wenn Du die Zeile 4 im Batch entsprechend anpasst, sollte der Rest funktionieren.
Grüße
bastla
P.S.: Und (bevor Du fragst): Nein, ich möchte auch in Zukunft nicht schon vorher wissen, auf welchem System in welcher Sprache ein Batch laufen soll - wo bliebe da die Spannung?
@bastla
<OT>
da habe ich mir SOFORT als Idee notiert :
Jemand sollte mal einen kleinen Bazchschnipsel hier ins Forum stellen, der den %date%-Variablenwert sprach- und Windowsversionsunabhängig normalisiert oder besser noch: vielleicht ein kleines Tutorial zum Thema "Umgang mit Datums- und Zeitvariablen im Batch"
Dann könnten diese ### den Ordnernamen für ihre ver###ten Datensicherungen ja selber aus dem %date% rausfieseln und würden uns nicht jeden Tag wieder mit diesem ### ### auf die ### ###.
Grüße
Biber
</OT>
<OT>
da habe ich mir SOFORT als Idee notiert :
Jemand sollte mal einen kleinen Bazchschnipsel hier ins Forum stellen, der den %date%-Variablenwert sprach- und Windowsversionsunabhängig normalisiert oder besser noch: vielleicht ein kleines Tutorial zum Thema "Umgang mit Datums- und Zeitvariablen im Batch"
Dann könnten diese ### den Ordnernamen für ihre ver###ten Datensicherungen ja selber aus dem %date% rausfieseln und würden uns nicht jeden Tag wieder mit diesem ### ### auf die ### ###.
Grüße
Biber
</OT>
@Biber
Die Idee hat was - und mit einem Titel wie etwa "Workshop Batch for Runaways Part III Datums- und Zeitvariablen im Batch" bekäme das Ergebnis auch noch den internationalen Touch ...
Grüße
bastla
P.S.: Aber glaubst Du wirklich, dass ein solches Tutorial dann auch gefunden würde (selbst, wenn es unter "Anleitungen zum Thema" angeführt wäre)?
Die Idee hat was - und mit einem Titel wie etwa "Workshop Batch for Runaways Part III Datums- und Zeitvariablen im Batch" bekäme das Ergebnis auch noch den internationalen Touch ...
Grüße
bastla
P.S.: Aber glaubst Du wirklich, dass ein solches Tutorial dann auch gefunden würde (selbst, wenn es unter "Anleitungen zum Thema" angeführt wäre)?
Moin JOML,
der Syntaxfehler resultiert mit an Sicherheit grenzender Wahrscheinlichkeit an überzähligen Leerzeichen hinter dem Variablenwert der SET-Anweisungen. (trailing blanks, wie der Italianer sagt).
Beispiel: Wenn ich überzählige Leerzeichen hier darstelle durch # und Deinen Code zitiere:
...dann kannst Du erkennen, dass bei der Ausführung des RENAME-Befehl u.U. so etwas rauskommt:
Abhilfe:
a) Minimalistisch und wertlos:
Einfach den zweiten Parameter des REN in Hochkomma setzen.
--> ren "%Datei%" "%Mon%%J%.*"
Dann hat aber auch die Zieldatei manchmal Leerstellen an lustigen Stellen.
b) Bis zum nächsten Batch ausreichend:
Einmal mit dem Editor überprüfen, wo überall unabsichtlich Leerzeichen angehängt wurden und entfernen.
[diesen Fallstrick samt Workaround hast Du allerdings in zwei Wochen wieder vergessen]
c) Nachhaltig.
Gewöhn Dir an, die SET-Anweisungen so zu schreiben
Falls Dich jemand daraufhin anspricht ("is' abba gar nicht so dokumentiert bei M$ und Computerbild") beruf Dich auf mich.
Grüße
Biber
der Syntaxfehler resultiert mit an Sicherheit grenzender Wahrscheinlichkeit an überzähligen Leerzeichen hinter dem Variablenwert der SET-Anweisungen. (trailing blanks, wie der Italianer sagt).
Beispiel: Wenn ich überzählige Leerzeichen hier darstelle durch # und Deinen Code zitiere:
@echo off & setlocal#
set "Datei=D:\Log.txt"#
set M=%date:~-7,2%#
set J=%date:~-2%#
if "%M%"=="01" set Mon=January#
if "%M%"=="02" set Mon=February
if "%M%"=="03" set Mon=March
if "%M%"=="04" set Mon=April
if "%M%"=="05" set Mon=May
if "%M%"=="06" set Mon=June
if "%M%"=="07" set Mon=July
if "%M%"=="08" set Mon=August
if "%M%"=="09" set Mon=September
if "%M%"=="10" set Mon=October
if "%M%"=="11" set Mon=November
if "%M%"=="12" set Mon=December
ren "%Datei%" %Mon%%J%.*
Ren "irgendwas.xyz" January 08 .*
Das würde eventuell einen Syntaxfehler " The syntax of the command is incorrect." erklären. Abhilfe:
a) Minimalistisch und wertlos:
Einfach den zweiten Parameter des REN in Hochkomma setzen.
--> ren "%Datei%" "%Mon%%J%.*"
Dann hat aber auch die Zieldatei manchmal Leerstellen an lustigen Stellen.
b) Bis zum nächsten Batch ausreichend:
Einmal mit dem Editor überprüfen, wo überall unabsichtlich Leerzeichen angehängt wurden und entfernen.
[diesen Fallstrick samt Workaround hast Du allerdings in zwei Wochen wieder vergessen]
c) Nachhaltig.
Gewöhn Dir an, die SET-Anweisungen so zu schreiben
set "Mon=January"
Falls Dich jemand daraufhin anspricht ("is' abba gar nicht so dokumentiert bei M$ und Computerbild") beruf Dich auf mich.
Grüße
Biber