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

Ordner nach darin liegenden Dateien umbenennen

Frage Entwicklung Batch & Shell

Mitglied: Stefanie.Luehnsdorf

Stefanie.Luehnsdorf (Level 1) - Jetzt verbinden

13.01.2015, aktualisiert 15.01.2015, 866 Aufrufe, 3 Kommentare

Hallo allerseits,

ich stehe vor einem Problem, für das ich bisher trotz allen Suchens und Herumprobierens keine Lösung gefunden habe. Ich suche ein Script (Batch; notfalls auch Perl, Python etc.) welches das folgende Problem lösen kann:

Szenario:

Ein Programm liest Messwerte aus. Diese werden für jede einzelne Messung in Unterordnern mit zufälligen Namen (zumindest habe ich bei der Benennung keine Systematik erkennen können) im Verzeichnis D:\data\ abgelegt. Die Ordnerliste sieht dann etwa so aus:

D:\data\5BF154ED065
D:\data\A254DC584E2
D:\data\BFCDC215487
D:\data\D18258D12A1
D:\data\FC2485693B4

Jeder einzelne dieser Ordner enthält mehrere Dateien mit Messwerten und genau eine Log-Datei, die nach dem Messzeitpunkt benannt ist und die Endung .log trägt.

D:\data\5BF154ED065
      • 20150113tuesday110557.log
      • DateiA.txt
      • DateiB.txt
      • usw.

Ziel ist nun ein Script, das sämtliche Ordner durchläuft und jeden einzelnen Ordner nach dem Namen der darin liegenden Log-Datei umbenennt.

Das Resultat soll dann also so aussehen:

D:\data\20150113tuesday110557
      • 20150113tuesday110557.log
      • DateiA.txt
      • DateiB.txt
      • usw.

Und das, wie gesagt, für jeden einzelnen der unzähligen Ordner die sich inzwischen angesammelt haben.


Vielleicht weiß ja einer von Euch, wie man sowas elegant lösen kann. Ich bin für jeden Hinweis dankbar.

Mit bestem Dank im Voraus
und den allerbesten Grüßen!

Steffi Lühnsdorf
Mitglied: rubberman
LÖSUNG 13.01.2015, aktualisiert 15.01.2015
Hallo Stefanie.Luehnsdorf, willkommen im Forum.

Dein Vorhaben sollte sich mit ein paar Zeilen Batchcode erledigen lassen.

*.bat
01.
@echo off &setlocal 
02.
set "root=D:\data" 
03.
 
04.
cd /d "%root%" 
05.
for /d %%i in (*) do for %%j in ("%%~i\*.log") do ECHO ren "%%~i" "%%~nj" 
06.
PAUSE
Der Code zeigt lediglich, was passieren würde. Um ihn scharf zu machen, entferne ECHO und ggf. PAUSE.

Grüße
rubberman
Bitte warten ..
Mitglied: colinardo
LÖSUNG 13.01.2015, aktualisiert 15.01.2015
Hallo Steffi,
oder mit Powershell so:
01.
$folder = 'D:\data' 
02.
gci $folder | ?{$_.PSIscontainer} | %{Rename-Item $_.FullName (gci "$($_.Fullname)\*.log" | select -ExpandProperty Basename -First 1) -Force -EA Continue}
Grüße Uwe
Bitte warten ..
Mitglied: Stefanie.Luehnsdorf
15.01.2015 um 19:02 Uhr
Hallo allerseits,

vielen Dank an rubberman und colinardo für die schnellen Lösungsvorschläge. Es hat perfekt funktioniert.
Ich hatte gar nicht erwartet, am selben Abend überhaupt schon eine Reaktion zu erhalten.

Vielen Dank und beste Grüße!

Steffi
Bitte warten ..
Neuester Wissensbeitrag
Router & Routing

192.168er Adresse im öffentlichen Netz

(2)

Erfahrungsbericht von visco-c zum Thema Router & Routing ...

Ähnliche Inhalte
Windows 7
Dateien umbenennen Unterschiede in Win7 und XP (3)

Frage von mani55 zum Thema Windows 7 ...

Windows Server
gelöst Freigegebener Ordner "Eigene Dateien" (8)

Frage von JensDND zum Thema Windows Server ...

Windows 10
Löschen von Ordner mit Dateien (3)

Frage von jerry32 zum Thema Windows 10 ...

Windows Userverwaltung
gelöst Ordner und Dateien in Domänenprofilen ausschließen (8)

Frage von BleppSatter zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (29)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (22)

Frage von Driphex zum Thema Exchange Server ...

Hyper-V
HYPER V und USB (16)

Frage von Hendrik2586 zum Thema Hyper-V ...

SAN, NAS, DAS
Backupserver für KMU (14)

Frage von Leo-le zum Thema SAN, NAS, DAS ...