mikrocontroller.net

Forum: PC Hard- und Software Ordner umbenennen nach Inhalt


Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-(

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Holger (Gast)
Datum:

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

Autor: Chris D. (m8nix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl. lohnt hier ein Blick drauf:

https://www.advancedrenamer.com/

Autor: Gerd S. (sigma9)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tommi (Gast)
Datum:

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

Autor: c.m. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: ugosna (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
@echo off
setlocal EnableExtensions, EnableDelayedExpansion

rem loop for all txt files in all subfolders
for /R %%i in (*.txt) do (

  rem assign filename as new path
  set npath=%%~ni

  rem remove last \ from oldpath
  set opath=%%~dpi
  set opath=!opath:~0,-1!
  
  echo move /Y "!opath!" "!npath!"
  move /Y "!opath!" "!npath!"
)

endlocal
goto :eof

Hat eventuell Probleme, wenn mehrere Ebenen geschachtelt sind und prüft 
auch nicht auf die Namensgleichheit des jpg.

Autor: Klickibunti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... in C# würde es vielleicht so aussehen (nicht getestet):
using System.IO;
string sourcedirectory = [Verzeichnis mit den 534 Unterverzeichnissen];
foreach (string subdir in Directory.GetDirectories(sourcedirectory))
{
 string newname = Directory.GetFiles(subdir)[0];
 int i0 = newname.LastIndexOf('\\') + 1;
 int i1 = newname.IndexOf('.');
 newname = newname.Substring(i0 , i1 - i0);
 newname = subdir.Substring(0, subdir.LastIndexOf('\\') + 1) + newname;
 Directory.Move(subdir, newname);
}

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
string sourcedirectory = FilePath; // FilePath = cmd-Eingabe
foreach (string subdir in Directory.GetDirectories(sourcedirectory))
{
string FileName = "";
string[] files = Directory.GetFiles(subdir);
for (int i = 0; i < files.Length; i++)
{
    if (files[i].EndsWith(".txt"))
    {
  FileName = files[i];

  File = new FileInfo(FileName);
  FileName = File.Name; // FileInfo mit Dateiname ohne Pfadangabe
  FileName = FileName.Replace(".txt", ""); // Dateierweiterung löschen

  break;
    }
}

string newDir = FilePath + FileName; // FilePath = cmd-Eingabe (Übergeordnetes Verzeichnis)
Directory.Move(subdir, newDir);
}



Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.