Forum: PC Hard- und Software Ordner umbenennen nach Inhalt


von Holger (Gast)


Lesenswert?

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 :-(

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mit Bordmitteln? Am einfachsten dürfte das mit etwas VBScript bzw. 
JScript-Code sein, den Du cscript.exe vorwirfst.

von Holger (Gast)


Lesenswert?

ja das habe ich befürchtet - habe dennoch gehofft dass es sowas wie ein 
klickibunti-Programm dafür gibt..
Danke!

von Chris D. (m8nix)


Lesenswert?

Evtl. lohnt hier ein Blick drauf:

https://www.advancedrenamer.com/

von Gerd S. (sigma9)


Lesenswert?

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

von Tommi (Gast)


Lesenswert?

Ich weiss nicht ob und wie. Aber per Batch-Datei vielleicht?

von c.m. (Gast)


Lesenswert?

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)

von ugosna (Gast)


Lesenswert?

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.

von Klickibunti (Gast)


Lesenswert?

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

von Holger (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.