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, 8555 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 ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch für File extension überprüfung und listenerstellungmit Zeit und Datum (2)

Frage von watch123 zum Thema Batch & Shell ...

Microsoft Office
MS Office History erweitern (1)

Frage von leofabian zum Thema Microsoft Office ...

Microsoft Office
Excel Nachfrage: Datum aus Spalte ausgeben (2)

Frage von PronMaster zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Linux Netzwerk
gelöst DHCP vergibt keine Adressen (32)

Frage von Maik82 zum Thema Linux Netzwerk ...

CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (20)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...

Hardware
gelöst PCI-Express-Adapterfrage (14)

Frage von DerWoWusste zum Thema Hardware ...