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, 858 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
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
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...