Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 30.05.2011 um 06:30:04 Uhr
Ordner umbennen mit Datum in Ordnernamen
Set /a rgc+=1
#760

Ordner umbennen mit Datum in Ordnernamen

Frage Entwicklung Batch & Shell

Mitglied: m.fessler

m.fessler (Level 1) - Jetzt verbinden

29.05.2011, aktualisiert 30.05.2011, 5728 Aufrufe, 21 Kommentare

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
Mitglied: 60730
30.05.2011 um 00:08 Uhr
Moin,

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ß
Bitte warten ..
Mitglied: Friemler
30.05.2011 um 01:17 Uhr
Hallo Martin,

um solche "Datumsfragen" beantworten zu können, müssen zuerst folgende Dinge geklärt werden:

  1. Ist diese Umbenennungsaktion einmalig oder soll das öfter/regelmäßig passieren?
  2. Soll das auf einer Maschine oder auf mehreren Maschinen durchgeführt werden?
  3. 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
Bitte warten ..
Mitglied: bastla
30.05.2011 um 08:25 Uhr
@Friemler
eine aufwändigere aber sicherere Methode (per VBS)
Um den Aufwand auch gleich zu demonstrieren :
01.
@echo off & setlocal 
02.
set G=%temp%\GetDateFormatted.vbs 
03.
>%G% echo D=DateAdd("d",WScript.Arguments(0),Date):WScript.Echo Year(D)^&"-"^&Right("0"^&Month(D),2)^&"-"^&Right("0"^&Day(D),2) 
04.
for /f %%i in ('cscript //nologo %G% 0') do set "Datum=%%i" 
05.
echo %Datum%
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]
Bitte warten ..
Mitglied: m.fessler
30.05.2011 um 12:27 Uhr
Hallo,

@Friemler
1. Öfters
2. Einzige Maschine
3. Jap

@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'"

Ginge es nicht auch so:

01.
@echo off & setlocal 
02.
set datum=%date:~-4%-%date:~-7,2%-%date:~-10,2% 
03.
set zielalt=datenstand_2011-04-14 
04.
set zielaltodatum=datenstand_ 
05.
 
06.
rename "Z:\%zielalt%" "%zielaltodatum%%datum%"
Nur bräuchte ich statt der 3. Zeile eine Funktion die nachsieht wie der Ordner heißt. "dir /b z:"? Und diese dann eben als variabel setzt.
Und statt der 4. Zeile müsste er mir den Ordnernamen hernehmen und das Datum hinten - also alles nach dem underline (10 Stellen) wegschneiden.

Grüße
Martin
Bitte warten ..
Mitglied: bastla
30.05.2011 um 13:03 Uhr
Hallo m.fessler!
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):
01.
@echo off & setlocal 
02.
set "zielalt=Z:\datenstand_2011-04-14" 
03.
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%" 
04.
 
05.
for %%i in ("%zielalt%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%datum%%%~xi"
Grüße
bastla
Bitte warten ..
Mitglied: m.fessler
30.05.2011 um 13:49 Uhr
Hallo bastla,

ok super, dann wäre ich nun bei:

01.
@echo off & setlocal 
02.
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%" 
03.
 
04.
for /f "delims=" %%i in ('dir /b "Z:\datenstand*"') do set "zielalt=%%i" 
05.
for %%i in ("Z:\%zielalt%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%datum%%%~xi"
Oder lassen sich die Zeile 4+5 noch "verschmelzen"?
Wobei ich dann auch noch den letztendlichen Namen des Zielverzeichnis für Robocopy benötige.
Noch mal dir /b?

Grüße
Martin
Bitte warten ..
Mitglied: bastla
30.05.2011 um 13:57 Uhr
Hallo m.fessler!

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"
wobei die oben von mir verwendete "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
Bitte warten ..
Mitglied: m.fessler
30.05.2011 um 14:27 Uhr
Hallo bastla,

funktioniert pefekt - DANKE!

Dann wäre ich also bei:

01.
@echo off & setlocal 
02.
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%" 
03.
 
04.
for /f "delims=" %%i in ('dir /b "Z:\datenstand*"') do for /f "delims=_" %%a in ("%%~ni") do ( 
05.
	ren "Z:\%%i" "%%a_%datum%%%~xi" 
06.
	set "neuesziel="Z:\%%a_%datum%%%~xi"" 
07.
08.
 
09.
echo %neuesziel%
Zitat von bastla:
wobei die oben von mir verwendete "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.
Damit werde ich also wohl leben müssen? Kein Problem.

Grüße
Martin
Bitte warten ..
Mitglied: bastla
30.05.2011 um 14:35 Uhr
Hallo m.fessler!
Damit werde ich also wohl leben müssen?
Keineswegs - Du kannst ja in meinem Ansatz oben
set "zielalt=Z:\datenstand_*"
verwenden oder, weniger übersichtlich, auch unmittelbar in Zeile 5 die entsprechende Suchmaske angeben:
for %%i in ("Z:\datenstand_*") do for /f "delims=_" %%a in ("%%~ni") do (
Grüße
bastla
Bitte warten ..
Mitglied: m.fessler
30.05.2011 um 15:50 Uhr
Zitat von bastla:
Hallo m.fessler!
> Damit werde ich also wohl leben müssen?
Keineswegs - Du kannst ja in meinem Ansatz oben
set "zielalt=Z:\datenstand_*"
verwenden
So?

01.
@echo off & setlocal 
02.
set "zielalt=Z:\datenstand_"  
03.
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%" 
04.
 
05.
for /f "delims=" %%i in ('dir /b "%zielalt%*"') do for /f "delims=_" %%a in ("%%~ni") do ( 
06.
	ren "%zielalt:~0,3%%%i" "%%a_%datum%%%~xi"  
07.
	set "neuesziel="%zielalt%%datum%%%~xi"" 
08.
09.
 
10.
echo %neuesziel%
Zitat von bastla:
oder, weniger übersichtlich, auch unmittelbar in Zeile 5 die entsprechende Suchmaske angeben:
for %%i in ("Z:\datenstand_*") do for /f "delims=_" %%a in ("%%~ni") do (
Du meinst Zeile 4 oder? Funktioniert bei mir nicht wirklich - egal obiges funktioniert.

Grüße
Martin
Bitte warten ..
Mitglied: bastla
30.05.2011 um 20:11 Uhr
Hallo m.fessler!
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
Bitte warten ..
Mitglied: m.fessler
30.05.2011 um 20:50 Uhr
Hallo bastla,

meinst du das Asterisk als Wildcard?
Das musste ich weglassen weil sonst das zusammensetzen beim rename und bei set "neuesziel=" nicht mehr funktioniert.
Aber so funktioniert es prächtig.
Ok beim rename extra den Laufwerksbuchstaben "rausschneiden" (ren "%zielalt:~0,3%....)sieht etwas "unübersichtlich" aus, aber es läuft.

Danke noch mal!

Grüße
Martin
Bitte warten ..
Mitglied: bastla
30.05.2011 um 20:54 Uhr
Hallo m.fessler!
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 ...

... aber wenn's so für Dich passt, soll's mir auch recht sein ...

Grüße
bastla
Bitte warten ..
Mitglied: m.fessler
30.05.2011 um 21:56 Uhr
Bastla, ich steh auf dem Schlauch.
Welcher der Vorschläge meinst du genau?

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.
Es funktioniert einmal prächtig und das ist die Hauptsache.

Grüße
Martin
Bitte warten ..
Mitglied: bastla
30.05.2011 um 22:35 Uhr
Hallo m.fessler!

Meine (ungeteste) angepasste Version würde so aussehen:
01.
@echo off & setlocal 
02.
set "zielalt=Z:\datenstand_*" 
03.
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%" 
04.
 
05.
for %%i in ("%zielalt%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%datum%%%~xi" & set "neuesziel=%%~dpi%%a_%datum%%%~xi" 
06.
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]
Bitte warten ..
Mitglied: m.fessler
31.05.2011 um 13:11 Uhr
Hallo bastla,

Bekomme nur ein "ECHO ist ausgeschaltet (OFF)." zurück.
Jap hatte das "ungetestet" gelesen.

Auch wenn deine Variante schön kurz gewesen wär - ja ich kann mit meiner leben.

Noch mal danke und noch nen schönen Tag,
Grüße

Martin
Bitte warten ..
Mitglied: bastla
31.05.2011 um 14:06 Uhr
Hallo m.fessler!
Auch wenn deine Variante schön kurz gewesen wär - ja ich kann mit meiner leben.
Unabhängig davon habe ich das überzählige Anführungszeichen in Zeile 5 entfernt ...

Grüße
bastla
Bitte warten ..
Mitglied: m.fessler
31.05.2011 um 17:29 Uhr
Hallo bastla,

nö funktioniert trotzdem nicht.
Aber wie gesagt... egal.

Grüße
Martin
Bitte warten ..
Mitglied: bastla
31.05.2011 um 17:36 Uhr
Hallo m.fessler!

Inzwischen habe ich meinen Ansatz erfolgreich getestet - ist zwar unerfreulich, dass Dir das nicht hilft, aber für diesen Thread ist nun wirklich die Zeit gekommen ...

Grüße
bastla
Bitte warten ..
Mitglied: Friemler
31.05.2011 um 17:39 Uhr
Zitat von bastla:
aber für diesen Thread ist nun wirklich die Zeit gekommen

ich schließe mich dem an ...

Gruß
Friemler
Bitte warten ..
Mitglied: m.fessler
31.05.2011 um 21:00 Uhr
Hallo bastla,

tja keine Ahnung warum es bei mir nicht läuft.
Aber ich hab auch noch eine Lösung gefunden - recht kurz und übersichtlich:

01.
@echo off & setlocal 
02.
set "zielalt=Z:\datenstand_" 
03.
set "datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%" 
04.
 
05.
for /f "tokens=1,2 delims=_" %%i in ('dir /b "%zielalt%*"') do ren "%zielalt%%%j" "%%i_%datum%" & set zielneu="%zielalt%%datum%" 
06.
 
07.
echo %zielneu%
Die nehme ich nun - somit hat es sich nun wirklich erledigt.

Danke,
Grüße
Martin
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Batch & Shell
Dateien im Ordner auslesen und umbennen (10)

Frage von jocheng zum Thema Batch & Shell ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...