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

Ausgedruckt am: 28.03.2024 um 20:03 Uhr

Mitglied: DasBreaker
DasBreaker 16.05.2013 um 00:33:28 Uhr
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
Mitglied: hermann76
hermann76 16.05.2013 um 01:41:11 Uhr
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
Mitglied: Skyemugen
Skyemugen 16.05.2013 aktualisiert um 10:00:41 Uhr
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.
Mitglied: hermann76
hermann76 16.05.2013 um 15:43:53 Uhr
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
Mitglied: DasBreaker
DasBreaker 16.05.2013 aktualisiert um 17:51:03 Uhr
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
Mitglied: hermann76
hermann76 16.05.2013 um 20:01:18 Uhr
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