Ordner umbennen mit Datum in Ordnernamen
Hallo,
eigentlich nichts besonders, aber ich bekomme es nicht hin.
Habe einen Ordner der zB. "Z:\datenstand_2011-04-14" heißt.
Dieser soll nun umbenannt werden mit dem heutigen Datum - also "Z:\datenstand_2011-05-29".
Wie geht das am einfachsten?
Danke sehr,
Grüße
Martin
eigentlich nichts besonders, aber ich bekomme es nicht hin.
Habe einen Ordner der zB. "Z:\datenstand_2011-04-14" heißt.
Dieser soll nun umbenannt werden mit dem heutigen Datum - also "Z:\datenstand_2011-05-29".
Wie geht das am einfachsten?
Danke sehr,
Grüße
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 30.05.2011 um 06:30:04 Uhr
Ordner umbennen mit Datum in Ordnernamen
Set /a rgc+=1#760
Content-ID: 167143
Url: https://administrator.de/contentid/167143
Ausgedruckt am: 21.11.2024 um 16:11 Uhr
21 Kommentare
Neuester Kommentar
Moin,
da hast du Glück, sowohl für das umbennen, als auch für Datumsformate haben wir unseren Biber.
Biber hat auch ein (das) Tutorial zum Thema Batch und Datum geschrieben.
Les es dir durch.
Gruß
Ordner umbennen mit Datum in Ordnernamen
da hast du Glück, sowohl für das umbennen, als auch für Datumsformate haben wir unseren Biber.
Biber hat auch ein (das) Tutorial zum Thema Batch und Datum geschrieben.
Les es dir durch.
Gruß
Hallo Martin,
um solche "Datumsfragen" beantworten zu können, müssen zuerst folgende Dinge geklärt werden:
Der Grund für diese Fragen ist: Es gibt viele mögliche Datumsformate auf Windowssystemen, abhängig von der Sprachversion und den Einstellungen auf den jeweiligen Systemen. Außerdem gibt es eine einfache/primitive und unsichere Methode, Datumswerte zu ermitteln (per Batch) und eine aufwändigere aber sicherere Methode (per VBS). Die einfache Version kann man nur bei einmaligen Aktionen oder für den Fall empfehlen, dass die Umbenennungsaktion nur auf einer Maschine, die von Dir kontrolliert wird, ausgeführt werden soll.
Die Batch-Methode funktioniert über das Zerlegen des Inhalts der Variablen
Wenn Du Dich über die Möglichkeiten in VBS schlau machen willst, starte mal diesen Download, eine CHM-Datei mit der Sprachreferenz von VBS und JScript.
Gruß
Friemler
um solche "Datumsfragen" beantworten zu können, müssen zuerst folgende Dinge geklärt werden:
- Ist diese Umbenennungsaktion einmalig oder soll das öfter/regelmäßig passieren?
- Soll das auf einer Maschine oder auf mehreren Maschinen durchgeführt werden?
- Bist Du der einzige, der Datumseinstellungen auf der/den Maschine(n) vornehmen kann?
Der Grund für diese Fragen ist: Es gibt viele mögliche Datumsformate auf Windowssystemen, abhängig von der Sprachversion und den Einstellungen auf den jeweiligen Systemen. Außerdem gibt es eine einfache/primitive und unsichere Methode, Datumswerte zu ermitteln (per Batch) und eine aufwändigere aber sicherere Methode (per VBS). Die einfache Version kann man nur bei einmaligen Aktionen oder für den Fall empfehlen, dass die Umbenennungsaktion nur auf einer Maschine, die von Dir kontrolliert wird, ausgeführt werden soll.
Die Batch-Methode funktioniert über das Zerlegen des Inhalts der Variablen
%DATE%
, wozu man deren vom Datumsformat abhängigen Aufbau kennen muss.Wenn Du Dich über die Möglichkeiten in VBS schlau machen willst, starte mal diesen Download, eine CHM-Datei mit der Sprachreferenz von VBS und JScript.
Gruß
Friemler
@Friemler
Die 0 in Zeile 4 steht für die Differenz in Tagen ab heute, womit auch gleich die immer wieder gern gestellte Frage nach dem Datum von gestern (-1) oder übermorgen (2) zu beantworten wäre ...
Grüße
bastla
P.S.: Bei http://www.dieseyer.de gab's vorhin auch noch die "de"-Version der "script56.chm" ...
[Edit] Zeile 4 korrigiert [/Edit]
eine aufwändigere aber sicherere Methode (per VBS)
Um den Aufwand auch gleich zu demonstrieren :@echo off & setlocal
set G=%temp%\GetDateFormatted.vbs
>%G% echo D=DateAdd("d",WScript.Arguments(0),Date):WScript.Echo Year(D)^&"-"^&Right("0"^&Month(D),2)^&"-"^&Right("0"^&Day(D),2)
for /f %%i in ('cscript //nologo %G% 0') do set "Datum=%%i"
echo %Datum%
Grüße
bastla
P.S.: Bei http://www.dieseyer.de gab's vorhin auch noch die "de"-Version der "script56.chm" ...
[Edit] Zeile 4 korrigiert [/Edit]
Hallo m.fessler!
Dass in Deinem Ansatz für die Umbenennung eine zusätzliche Variable (für den konstanten Namensteil) sowie nur ein Teil des Pfades verwendet wird, finde ich etwas weniger schön - und würde das eher so anlegen (unter der Voraussetzung, dass der konstante Teil immer bis zum ersten "_" des Dateinamens reicht):
Grüße
bastla
Da bekomme ich folgendes als Meldung: "C:\DOKUME~1\USER\LOKALE~1\Temp\GetDateFormatted.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Ungültiger Prozeduraufruf oder ungültiges Argument: 'DateAdd'"
Nicht weiter verwunderlich - ich hatte zwar schon erklärt, was es mit der Null in Zeile 4 auf sich hätte, diese aber noch nicht eingetragen - ist jetzt oben korrigiert ...Ginge es nicht auch so:
Hinsichtlich der Datumsermittlung: Natürlich, hatte ja Friemler oben angemerkt - VBS hat den Vorteil, nicht nur von den Datumseinstellungen, sondern auch von der Sprache des Systems unabhängig zu arbeiten (und den angesprochenen Zusatznutzen, sehr leicht auch ein Datum im Abstand einer vorgegebenen Anzahl von Tagen (zB -1 für "gestern") ermitteln zu können.Dass in Deinem Ansatz für die Umbenennung eine zusätzliche Variable (für den konstanten Namensteil) sowie nur ein Teil des Pfades verwendet wird, finde ich etwas weniger schön - und würde das eher so anlegen (unter der Voraussetzung, dass der konstante Teil immer bis zum ersten "_" des Dateinamens reicht):
@echo off & setlocal
set "zielalt=Z:\datenstand_2011-04-14"
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
for %%i in ("%zielalt%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%datum%%%~xi"
bastla
Hallo m.fessler!
Etwa so (ungetestet):
wobei die oben von mir verwendete "
Grüße
bastla
Etwa so (ungetestet):
for /f "delims=" %%i in ('dir /b "Z:\datenstand*"') do for /f "delims=_" %%a in ("%%~ni") do ren "Z:\%%i" "%%a_%datum%%%~xi"
for
"-Schleife ohne "/f
" den Vorteil hat, vollständige Pfade (und nicht nur Dateinamen) zu liefern - daher muss dann beim "ren
" der Pfad ("Z:\") nicht zusätzlich angegeben werden.Grüße
bastla
Hallo m.fessler!
verwenden oder, weniger übersichtlich, auch unmittelbar in Zeile 5 die entsprechende Suchmaske angeben:
Grüße
bastla
Damit werde ich also wohl leben müssen?
Keineswegs - Du kannst ja in meinem Ansatz obenset "zielalt=Z:\datenstand_*"
for %%i in ("Z:\datenstand_*") do for /f "delims=_" %%a in ("%%~ni") do (
bastla
Hallo m.fessler!
Wenn Du übrigens meinen Vorschlag für die Zeile 2 mit dem von Dir Geposteten (beides im Kommentar gleich oberhalb) vergleichst, dürftest Du einen kleinen, aber wesentlichen Unterschied finden ...
Grüße
bastla
Du meinst Zeile 4 oder?
Ich meinte Zeile 5 in meinem Batch-Ansatz - und inzwischen auch bei Deiner Fassung ... Wenn Du übrigens meinen Vorschlag für die Zeile 2 mit dem von Dir Geposteten (beides im Kommentar gleich oberhalb) vergleichst, dürftest Du einen kleinen, aber wesentlichen Unterschied finden ...
Grüße
bastla
Hallo m.fessler!
... aber wenn's so für Dich passt, soll's mir auch recht sein ...
Grüße
bastla
meinst du das Asterisk als Wildcard?
Das musste ich weglassen weil sonst das zusammensetzen beim rename und bei set "neuesziel=" nicht mehr funktioniert.
Deswegen wird die eigentliche Verarbeitung (vor allem Zerlegung) bei meinem Vorschlag auch anders realisisert ...Das musste ich weglassen weil sonst das zusammensetzen beim rename und bei set "neuesziel=" nicht mehr funktioniert.
... aber wenn's so für Dich passt, soll's mir auch recht sein ...
Grüße
bastla
Hallo m.fessler!
Meine (ungeteste) angepasste Version würde so aussehen:
Grüße
bastla
[Edit] Überzähliges Anführungszeichen in Zeile 5 entfernt [/Edit]
Meine (ungeteste) angepasste Version würde so aussehen:
@echo off & setlocal
set "zielalt=Z:\datenstand_*"
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
for %%i in ("%zielalt%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%datum%%%~xi" & set "neuesziel=%%~dpi%%a_%datum%%%~xi"
echo %neuesziel%
Aber falls die Lösung von "30.05.2011, 15:50:24 Uhr" für dich "optisch" auch ok erscheint dann belassen wir es dabei.
Sie ist, aufgrund der Tatsache, dass Du den Pfad (konkret "Z:\") durch Angabe der Zeichenanzahl ermittelst, weniger übersichtlich und änderungsfreundlich - aber nochmals: Du musst damit leben - und wenn Du das gut kannst, dann belasse es bei der Variante ...Grüße
bastla
[Edit] Überzähliges Anführungszeichen in Zeile 5 entfernt [/Edit]
ich schließe mich dem an ...
Gruß
Friemler