Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

String in Dateinamen suchen und nach folgende Zeichen ersetzen

Frage Entwicklung Batch & Shell

Mitglied: MTB4ever

MTB4ever (Level 1) - Jetzt verbinden

27.04.2009, aktualisiert 11:45 Uhr, 6549 Aufrufe, 4 Kommentare

Hallo,

also die Ausgangslage, habe mehrere Dateien die wie folgt aufgebaut sind (Jeden Tag 3 neue Dateien):

"Datei 1 200904240757_11111111.txt"
"Datei 2 200904240758_22222222.txt"
"Datei 3 200904240759_33333333.txt"

Wie man sieht gibt es nach dem 2 Leerzeichen ein Zeitstempel mit den Format JJJJMMDD und dann die Uhrzeit an dem die Datei erstellt wurde im Format HHMM.

Jetzt zu mein Problem: Ich brauch eine Batch Datei die die Dateinamen wie folgt anpasst:

"Datei 1 200904240759_11111111.txt"
"Datei 2 200904240759_22222222.txt"
"Datei 3 200904240759_33333333.txt"

Also sozusagen bei der Uhrzeit die neuste Zeit aus den Dateinamen entnimmt und in den anderen 2 Dateien die Dateinamen dann die Uhrzeit sucht und mit der neusten Zeit ersetzt.


Hat einer eine Idee ?

MfG Michael
Mitglied: bastla
27.04.2009 um 13:14 Uhr
Hallo MTB4ever!

Etwa so (wenn Aufbau und Länge der Namen konstant sind):
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Basis=D:\Dein Ordner" 
03.
set "Maske=Datei ? 20*.txt" 
04.
 
05.
pushd "%Basis%" 
06.
for /f "delims=" %%i in ('dir /b "%Maske%"^|sort /+9') do set "Neueste=%%i" 
07.
set Zeit=%Neueste:~16,4% 
08.
for /f "delims=" %%i in ('dir /b "%Maske%"') do ( 
09.
    set "Name=%%i" 
10.
    set "Name=!Name:~,16!%Zeit%!Name:~20!" 
11.
    echo ren "%%i" "!Name!" 
12.
13.
popd
Wegen des "echo" in der Zeile 11 wird die Umbenennung nur angezeigt - wenn's ok aussieht, das "echo" einfach ersatzlos streichen.

Grüße
bastla
Bitte warten ..
Mitglied: MTB4ever
27.04.2009 um 14:15 Uhr
Hi bastla,

also erstmal danke es funkioniert soweit.

Noch eine andere Frage. Die Dateien liegen normalerweise in 2 Ordnern Datei 1 + 2 in Ordner c:\temp\Ordner1 und Datei 3 in Ordner c:\Temp\Ordner2 .

kKann man die Batch so anpassen, dass das auch so funktioniert oder soll ich vorher Dateien immer erst in ein Ordner kopieren und dann wenn umbenannt wieder zurückschieben?

MfG Michael
Bitte warten ..
Mitglied: bastla
27.04.2009 um 16:33 Uhr
Hallo MTB4ever!

Kann man die Batch so anpassen, dass das auch so funktioniert oder soll ich vorher Dateien immer erst in ein Ordner kopieren und dann wenn umbenannt wieder zurückschieben?
Die Anpassung ließe sich zwar machen, aber wäre vermutlich unnötiger Aufwand - aufgrund des konstanten Teiles des Dateinamens brauchst Du ja eigentlich nur zwischen den Zeilen 5 und 6
move "C:\Temp\Ordner2\Datei 3 20*.txt"
einzufügen und vor dem "popd" eine neue Zeile
move "Datei 3 20*.txt" "C:\Temp\Ordner2\"
zu platzieren.

Und (nur zur Sicherheit): Die Zeile 2 lautet dann natürlich
set "Basis=c:\temp\Ordner1"
Schöner wäre es natürlich noch, auch für den zweiten Ordner eine Variable zu verwenden und in den obigen Zeilen einzusetzen ...

Grüße
bastla
Bitte warten ..
Mitglied: MTB4ever
27.04.2009 um 17:14 Uhr
Danke dir vielmals! es funktioniert so!
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst VBScript: Hexwert durch Zeichen (String) ersetzen (12)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
String aus Spalte in csv auslesen und ersetzen (4)

Frage von mIsSteR zum Thema Batch & Shell ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (31)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Netzwerk
Netzwerk Neustrukturierung (15)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...