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

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, 6479 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
Batch & Shell
gelöst Suchen ersetzen mit Sonderzeichen (2)

Frage von GNLen1 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Batchdatei um einen Proxy einzustellen (14)

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