hermann76
Goto Top

Windows 7 - Umbenennen von Dateien mit Präfixen variabler Länge

Hallo,

ich habe einen Ordner mit sehr vielen Dateien, die folgendes Muster haben:

präfix NAME NUMMER . endung (ohne Leerzeichen)

Die präfixe haben unterschiedliche Länge und haben systematisch nichts mit den NUMMERN, und damit der Reihenfolge der Dateien zu tun.
Ich möchte die Präfixe loswerden, so dass am Ende nur noch

NAME NUMMER . endung

übrig bleibt.

Könnt ihr mir einen Tip, einen Link oder ein paar weiterführende Stichworte zur Selbstsuche geben?
Ich habe bislang nur Lösungen für gleich lange Präfixe gefunden.

Ich will möglichst keine zusätzlichen Programme.
(Nutze als Viewer XnView, aber damit geht es leider nicht)

Danke im Voraus.

Hermann

Content-Key: 206547

Url: https://administrator.de/contentid/206547

Printed on: April 19, 2024 at 19:04 o'clock

Member: DasBreaker
DasBreaker May 15, 2013 at 22:33:28 (UTC)
Goto Top
Hallo,

wie ist den die Präfix aufgebaut? (nur kleine Buchstaben bis zum Namen/nur Zahlen)
- endet die Präfix mit was bestimmten? (mit einem _ oder - usw)
- gib einfach ein Paar Beispiele. (10 sollten ausreichen)

Mit freundlichen Grüßen
DasBreaker
Member: hermann76
hermann76 May 15, 2013 at 23:41:11 (UTC)
Goto Top
Die Präfixe bestehen aus Buchstaben (kleine und große und Zahlen. Getrennt sind sie vom Namen durch einen Bindestrich "-".

Also etwa:

FWUARZa-
18Wbkiw-
exCETnA- usw.

Das Problem ist, dass die Präfixe manchmal fehlen, also quasi die Länge 0 haben.

Ich hatte da an regular expressions gedacht, weiß aber nicht, wie dass in Windows funktioniert.

Grüße
Member: Skyemugen
Skyemugen May 16, 2013 updated at 08:00:41 (UTC)
Goto Top
Moin,

Stichworte zur Selbstsuche: (sogar hier in der Suchfunktion)

batch Dateien umbenennen

Wir haben unzählige Kombinationen an for /f Schleifen, die genau dafür gedacht waren/sind ;)

Gruß


Edith gibt ein kleines, vereinfachtes Anschauungsbeispiel: (batch liegt im gleichen Verzeichnis)
@echo off & setlocal enabledelayedexpansion
for /f "delims=- tokens=1,*" %%s in ('dir /b /a-d') do (  
	set "var=%%t"  
	if defined var (echo ren "%%s-%%t" "%%t") else (echo ren "-%%s" "%%s")  
	)
pause
Die beiden echo dienen der Voransicht, da uns auch nicht klar ist, ob NUR derartig benannte Dateien vorkommen.
Member: hermann76
hermann76 May 16, 2013 at 13:43:53 (UTC)
Goto Top
Danke erst einmal für die Antworten.

@Skyemugen: Ich denke diese Stichworte wären zu allgemein, mit in etwa denselben habe ich vergeblich gesucht.

Mit dem Skript werde ich mich auseinandersetzen, (es "übersetzen") da mir dos-Befehle nicht so geläufig sind.

Grüße
Member: DasBreaker
DasBreaker May 16, 2013 updated at 15:51:03 (UTC)
Goto Top
Hi,

ich könnte dir ein kleines Javabasierendes Programm schreiben...

import java.io.File;

public class start {
	public static void main(String args) {
		
		if(args.length < 2){
			System.err.println("Not enough start parameters");  
			System.exit(1);
		}
		if(!new File(args[1]).isDirectory()){
			System.err.println(args[1]);
			System.err.println("Given path is no folder");  
			System.exit(1);	
		}
		String preafix = args;
		String filePath = args[1];
		
		File path = new File(filePath);
		File allFiles = path.listFiles();
		
		for(int i = 0;allFiles.length > i;i++) {
			if(allFiles[i].isFile()){
				//Dateien
				if(allFiles[i].getName().toString().contains(preafix)){
					
					if(!new File(allFiles[i].getParent() + System.getProperty("file.separator") + allFiles[i].getName().split("-", 2)[1]).exists()) {  
						System.out.println("Rename: " + allFiles[i].getName() + " -> " + allFiles[i].getName().split("-", 2)[1]);  
						allFiles[i].renameTo(new File(allFiles[i].getParent() + System.getProperty("file.separator") + allFiles[i].getName().split("-", 2)[1]));  
					} else {
						System.err.println("Duplicated filename: " + allFiles[i].getName() +" # " + allFiles[i].getName().split("-", 2)[1]);  
					}
					
				} else {
					System.out.println("Ignore: " + allFiles[i].getName());  
				}
				
			} else {
				//Ordner
			}
		}
	}

}

...ups schon geschehen :P

Das macht aus das...
http://i.imagebanana.com/img/4zx1d956/snipsnap.PNG
das...
http://i.imagebanana.com/img/haij5g7p/snipsnap2.PNG

Ausgabe:
Rename: 34g9un-blarg30333.TXT -> blarg30333.TXT
Rename: uhbeuw-moepMoep12121.TXT -> moepMoep12121.TXT
Rename: uhqqw543Dbeuw-BLAAblaa123.TXT -> BLAAblaa123.TXT

wenn man es mehrmals durchlaufen lässt...
Ausgabe:
Ignore: BLAAblaa123.TXT
Ignore: blarg30333.TXT
Ignore: moepMoep12121.TXT

Datei schon vorhanden...
Ausgabe:
Ignore: BLAAblaa123.TXT
Duplicated filename: check-BLAAblaa123.TXT # BLAAblaa123.TXT

Wenn nötig kann auch eine Logdatei geschrieben werden.

Mit freundlichen Grüßen
DasBreaker
Member: hermann76
hermann76 May 16, 2013 at 18:01:18 (UTC)
Goto Top
Vielen Dank, DasBreaker!

Werde das mal ausprobieren ...

Ich schließe dieses Thema hier.
Ich denke, ich habe mit den beiden Ansätzen (dos, java) erst einmal genügend Anhaltspunkte face-smile

Vielen Dank für Eure Unterstützung.

Grüße