Hallo, ich habe eine Reihe von Ordner (534 St.) die im Namen einfach durchnummeriert sind. In den Ordner sind jeweils zwei Dateien (.jpg und eine .txt) im Schema TQF_0123_Messreihe_Blau.tx, die jpg. heißt gleich, nur eben mit andere Dateiendung. wobei die Bezeichnung hinter der Zahl immer variiert. Gibt es eine Möglichkeit unter Win7 alle Ordner entsprechend der beinhaltenden Datei umzubenennen? Ich hätte gerne dass der Ordner dann eben TQF_0123_Messreihe_Blau heißt. Editieren von Hand ist keine Option, es sind einfach zuviele Ordner :-(
Mit Bordmitteln? Am einfachsten dürfte das mit etwas VBScript bzw. JScript-Code sein, den Du cscript.exe vorwirfst.
ja das habe ich befürchtet - habe dennoch gehofft dass es sowas wie ein klickibunti-Programm dafür gibt.. Danke!
So was mache ich mit autohotkey. Sehr mächtig, dabei noch recht einfach zu lernen. Ist ein Script-Interpreter. Ein Vorteil: wenn ein Script aus getestet ist, kann man es in eine exe kompilieren. Damit kann man dann alles machen, was mit jeder exe geht, zB via Explorer-kontextmenu aufrufen. Finde ich sehr praktisch. Ist natürlich mit Lernaufwand verbunden und Geschmacksache
unter linux ein leichtes. da ich mich mit windows eigentlich gar nicht mehr auskenne, würde ich wirklich gerne mal sehen wie sowas dort gelöst wird. (sic)
c.m. schrieb: > würde ich > wirklich gerne mal sehen wie sowas dort gelöst wird. (sic) Passend zu deinem Name mit cmd.exe.
1 | @echo off |
2 | setlocal EnableExtensions, EnableDelayedExpansion |
3 | |
4 | rem loop for all txt files in all subfolders |
5 | for /R %%i in (*.txt) do ( |
6 | |
7 | rem assign filename as new path |
8 | set npath=%%~ni |
9 | |
10 | rem remove last \ from oldpath |
11 | set opath=%%~dpi |
12 | set opath=!opath:~0,-1! |
13 | |
14 | echo move /Y "!opath!" "!npath!" |
15 | move /Y "!opath!" "!npath!" |
16 | ) |
17 | |
18 | endlocal |
19 | goto :eof |
Hat eventuell Probleme, wenn mehrere Ebenen geschachtelt sind und prüft auch nicht auf die Namensgleichheit des jpg.
... in C# würde es vielleicht so aussehen (nicht getestet):
1 | using System.IO; |
2 | string sourcedirectory = [Verzeichnis mit den 534 Unterverzeichnissen]; |
3 | foreach (string subdir in Directory.GetDirectories(sourcedirectory)) |
4 | {
|
5 | string newname = Directory.GetFiles(subdir)[0]; |
6 | int i0 = newname.LastIndexOf('\\') + 1; |
7 | int i1 = newname.IndexOf('.'); |
8 | newname = newname.Substring(i0 , i1 - i0); |
9 | newname = subdir.Substring(0, subdir.LastIndexOf('\\') + 1) + newname; |
10 | Directory.Move(subdir, newname); |
11 | }
|
Hallo, ähnlich wie Klickibunti habe ich es mit C# gemacht. Für mich war die Verwendung von FileInfo einfacher als das manuelle aufzwirbeln von Pfad und Dateinamen. Grüße Holger
1 | string sourcedirectory = FilePath; // FilePath = cmd-Eingabe |
2 | foreach (string subdir in Directory.GetDirectories(sourcedirectory)) |
3 | {
|
4 | string FileName = ""; |
5 | string[] files = Directory.GetFiles(subdir); |
6 | for (int i = 0; i < files.Length; i++) |
7 | {
|
8 | if (files[i].EndsWith(".txt")) |
9 | {
|
10 | FileName = files[i]; |
11 | |
12 | File = new FileInfo(FileName); |
13 | FileName = File.Name; // FileInfo mit Dateiname ohne Pfadangabe |
14 | FileName = FileName.Replace(".txt", ""); // Dateierweiterung löschen |
15 | |
16 | break; |
17 | }
|
18 | }
|
19 | |
20 | string newDir = FilePath + FileName; // FilePath = cmd-Eingabe (Übergeordnetes Verzeichnis) |
21 | Directory.Move(subdir, newDir); |
22 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.