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, 875 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 ..
Ähnliche Inhalte
Microsoft
Im ordner nach dateien aus excel liste suchen (2)

Frage von tioloco zum Thema Microsoft ...

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 ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(4)

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 ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (41)

Frage von Datsspeed zum Thema Exchange Server ...

Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

LAN, WAN, Wireless
gelöst Statische Routen mit ISC-DHCP Server für Android Devices (18)

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

Exchange Server
gelöst Migration Exchange 2007 zu 2013 - Public Folder teilweise weg (16)

Frage von Andy1987 zum Thema Exchange Server ...