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
GELÖST

Dateinamen vergleichen und ggf. mit Datum Zeit erweitern

Frage Entwicklung Batch & Shell

Mitglied: Dino2002

Dino2002 (Level 1) - Jetzt verbinden

08.08.2008, aktualisiert 09:47 Uhr, 8554 Aufrufe, 3 Kommentare

Hallo zusammen,

auf einem w2k3 System werden täglich neue Dateien abgelegt. Die neuen Dateien sollen im gleichen Verzeichnis mit aktuellem Datum sowie der Uhrzeit über einen geplanten Batch Job erweitert werden z. B. dateiA.txt in dateiA_Datum_Uhrzeit.txt.

Die Umbenennung funktioniert soweit, aber ich stehe weiter vor dem Problem, dass bei einem erneuten Aufruf der Batch, der Dateiname immer wieder um das aktuelle Datum sowie Uhrzeit erweitert wird - dateiA_Datum_Uhrzeit_Datum_Uhrzeit_Datum_Uhrzeit.txt …

Die Batch sieht so aus

@echo off
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2%
set mytime=%time:~-11,2%%time:~-8,2%%time:~-5,2%
for /R D:\Incoming\ %%d IN (*.*) DO (
move %%d %%~dpnd_%mydate%_%mytime: =0%.txt
)
:exit

Wie könnte die Batch denn aussehen, wenn sie den Dateinamen vor der Erweiterung auf den String _Datum_Uhrzeit = z. B. „_20080807_213133“ überprüft bevor sie das aktuelle Datum&Uhrzeit einfügt?

Auf dem System darf ich nur mit w2k3 Boardmitteln arbeiten und von daher die Batch-Lösung. Ich habe bereits einige Beiträge gelesen aber leider kriege ich den Einstieg nicht so hin - vielen Dank in Voraus
Mitglied: stbewo
08.08.2008 um 08:05 Uhr
Hi Dino,

kannst Du die umbenannten Files in der FOR Schleife nicht mit einem Read Only versehen? Die können mit einem weiteren Batchlauf nicht mehr verändert werden.

Gruß
Stefan
Bitte warten ..
Mitglied: bastla
08.08.2008 um 08:22 Uhr
Hallo Dino2002 und willkommen im Forum!

Soferne Du hinsichtlich des Dateinamensformates "Name_Datum_Zeit" sicher sein kannst, müsste es ja genügen, vor dem Umbenennen zu überprüfen, ob der Name bereits das heutige Datum (soferne nicht auch ältere Dateien zu berücksichtigen wären) enthält (die Zeit ändert sich ja bei jedem Durchlauf):
01.
@echo off & setlocal 
02.
set "mydate=%date:~-4%%date:~-7,2%%date:~-10,2%" 
03.
set "mytime=%time:~-11,2%%time:~-8,2%%time:~-5,2%" 
04.
set "mytime=%mytime: =0%" 
05.
for /R D:\Incoming\ %%d IN (*.*) DO ( 
06.
	for /f "tokens=2 delims=_" %%i in ("%%~nd") do ( 
07.
		if "%%i" neq "%mydate%" move "%%d" "%%~dpnd_%mydate%_%mytime%.txt" 
08.
09.
)
Das Umwandeln ev in %mytime% enthaltener Leerzeichens in "0" braucht eigentlich nur einmal (vor der Schleife) zu erfolgen, und mit den Anführungszeichen um Dateinamen/Pfade herum erfolgt eine Absicherung gegen Probleme wegen ev darin enthaltener Leerzeichen.

Willst Du übrigens wirklich allen Dateien den Typ ".txt" geben, egal, welchen sie vorher hatten? Falls nicht, wäre ".txt" durch "%%~xd" zu ersetzen.
Nachtrag: Noch sicherer (unter der Voraussetzung, dass nur bereits mit dem Datums- / Uhrzeitzusatz versehene Dateien den Namensbestandteil "_20" [damit sollte es bis zum Ende des Jahrhunderts funktionieren ] enthalten) wäre:
01.
@echo off & setlocal 
02.
set "mydate=%date:~-4%%date:~-7,2%%date:~-10,2%" 
03.
set "mytime=%time:~-11,2%%time:~-8,2%%time:~-5,2%" 
04.
set "mytime=%mytime: =0%" 
05.
for /R D:\Incoming\ %%d IN (*.*) DO ( 
06.
	echo %%~nd|findstr "_20">nul || move "%%d" "%%~dpnd_%mydate%_%mytime%.txt" 
07.
)
Grüße
bastla
Bitte warten ..
Mitglied: Dino2002
08.08.2008 um 09:46 Uhr
Hallo Bastla,

juhu es funktioniert "FREU" - ich habe es mir viel komplizierter vorgestellt. Damit dürfte die Batch länger funktionieren als ich

@Stefan, ebenfalls eine gute Idee - habe schon mit den Gedanken gespielt diese zu implementieren.

Vielen Dank,

Gruß Dino
Bitte warten ..
Ähnliche Inhalte
Monitoring
gelöst Nagios Plugin Datum in Dateiname abfragen (2)

Frage von itazubii zum Thema Monitoring ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Basic
VBScript erweitern für Subfolder (8)

Frage von 132078 zum Thema Basic ...

Heiß diskutierte Inhalte
Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...

Festplatten, SSD, Raid
gelöst Fehlerhafte Blöcke im RAID 10 (12)

Frage von Kojak-LE zum Thema Festplatten, SSD, Raid ...

Windows Server
gelöst Microsoft-Lizenz CALs und passendes Server-Betriebssystem (12)

Frage von planetIT2016 zum Thema Windows Server ...

Netzwerkgrundlagen
gelöst Cisco SG500 Series LAG hat sich von selbst umgestellt (11)

Frage von Ex0r2k16 zum Thema Netzwerkgrundlagen ...