Nach Schema umbenennen (Dateinamen über eine Liste ersetzen)

Aktuelle Version: 12.26 (02.12.2021)
Alles zum Thema Directory Opus
Antworten
jstw
Beiträge: 5
Registriert: 22. Nov 2021 08:37
Betriebssystem: Windows Pro 64bit
DOpus Version: 12.xx + Betas
Edition: Pro

Nach Schema umbenennen (Dateinamen über eine Liste ersetzen)

Beitrag von jstw »

Ich muß regelmäßig Dateien nach einem bestimmten Schema umbenennen. Ich mache dies bisher mit dem Programm "advanced renamer".
Jetzt Habe ich Directory Opus entdeckt und möchte das Programm zum umbenennen nutzen.

Dateinamen haben folgenden Aufbau:

name + "fortlaufender nummerierungs suffix"
Ich würde gerne den Suffix nach einem Schema verändern.

Das Schema:
0000 --> RAL7035-5010
0001 --> RAL7035-3000
0002 --> RAL7035-6011
..
..
0099 --> RAL9005-9005

Ist dies durch ein Script möglich?
Vielen Dank

Jörg
Benutzeravatar
tbone
Berater
Beiträge: 626
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64

Re: fortlaufenden Suffix nach Schema umbenennen

Beitrag von tbone »

Bitte mal 2, 3 konkrete Beispiele mit altem/neuem Namen geben.

Könnte mit RegularExpression zu lösen sein, sofern alle Infos für den neuen Namen im alten voranden sind, falls nicht, braucht man in der Tat ein Script. Dass muss aber nicht zwingend über DO laufen, mit Windows-Bordmitteln und bspw. JScript oder einer anderen Scriptsprache (Perl, PHP, Python, Powershell etc.), kann man Dateien auch automatisch umbenennen.
jstw
Beiträge: 5
Registriert: 22. Nov 2021 08:37
Betriebssystem: Windows Pro 64bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: fortlaufenden Suffix nach Schema umbenennen

Beitrag von jstw »

Hallo tbone,

hier ein Beispiel:

name_0000 --> name_RAL7035-5010
name_0001 --> name_RAL7035-3000
name_0002 --> name_RAL7035-2004
...
name_0099 --> name_RAL9005-9005

Ich benenne so unsere "gerenderten" Artikel. Der "name" ist natürlich bei jedem Artikel anders. Jeder Artikel hat halt 99 Farbvarianten. (0000 - 0099)

wobei z.B. 0000 immer RAL7035-5010, 0001 immer RAL7035-3000, ... wird.

VIELEN DANK!
Benutzeravatar
tbone
Berater
Beiträge: 626
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64

Re: fortlaufenden Suffix nach Schema umbenennen

Beitrag von tbone »

Die Infos im alten Namen reichen also nicht, um den neuen zu bilden.

Dann hast Du vermutlich eine Art Tabelle für die Zuweisung von bspw. "0000" nach "RAL7035-5010"? Vielleicht kannst Du mal ein paar Zeilen daraus posten (oder alle), irgendwie muss man ja erstmal gucken, ob diese Daten schon Script-verarbeitbar vorliegen, falls nicht, diese aufbereiten (im Falle einer Excel-Tabelle, auf jeden Fall erstmal zu irgend etwas "Text"-artigem exportieren.)

Als Format für sowas bietet sich CSV, YML, JSON, XML oder ählich an, das lässt sich von allen Scriptsprachen ansich gut einlesen.
jstw
Beiträge: 5
Registriert: 22. Nov 2021 08:37
Betriebssystem: Windows Pro 64bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: fortlaufenden Suffix nach Schema umbenennen

Beitrag von jstw »

Hallo tbone,

vielen Dank!!
csv konnte ich keine hochladen.

Daher mal so:

0000;RAL7035-5010
0001;RAL7035-3000
0002;RAL7035-2004
0003;RAL7035-7016
0004;RAL7035-6011
0005;RAL7035-7035
0006;RAL7035-5005
0007;RAL7035-5012
0008;RAL7035-5015
0009;RAL7035-9005
0010;RAL3000-5010
0011;RAL3000-3000
0012;RAL3000-2004
0013;RAL3000-7016
0014;RAL3000-6011
0015;RAL3000-7035
0016;RAL3000-5005
0017;RAL3000-5012
0018;RAL3000-5015
0019;RAL3000-9005
0020;RAL2004-5010
0021;RAL2004-3000
0022;RAL2004-2004
0023;RAL2004-7016
0024;RAL2004-6011
0025;RAL2004-7035
0026;RAL2004-5005
0027;RAL2004-5012
0028;RAL2004-5015
0029;RAL2004-9005
0030;RAL7016-5010
0031;RAL7016-3000
0032;RAL7016-2004
0033;RAL7016-7016
0034;RAL7016-6011
0035;RAL7016-7035
0036;RAL7016-5005
0037;RAL7016-5012
0038;RAL7016-5015
0039;RAL7016-9005
0040;RAL6011-5010
0041;RAL6011-3000
0042;RAL6011-2004
0043;RAL6011-7016
0044;RAL6011-6011
0045;RAL6011-7035
0046;RAL6011-5005
0047;RAL6011-5012
0048;RAL6011-5015
0049;RAL6011-9005
0050;RAL5005-5010
0051;RAL5005-3000
0052;RAL5005-2004
0053;RAL5005-7016
0054;RAL5005-6011
0055;RAL5005-7035
0056;RAL5005-5005
0057;RAL5005-5012
0058;RAL5005-5015
0059;RAL5005-9005
0060;RAL5010-5010
0061;RAL5010-3000
0062;RAL5010-2004
0063;RAL5010-7016
0064;RAL5010-6011
0065;RAL5010-7035
0066;RAL5010-5005
0067;RAL5010-5012
0068;RAL5010-5015
0069;RAL5010-9005
0070;RAL5012-5010
0071;RAL5012-3000
0072;RAL5012-2004
0073;RAL5012-7016
0074;RAL5012-6011
0075;RAL5012-7035
0076;RAL5012-5005
0077;RAL5012-5012
0078;RAL5012-5015
0079;RAL5012-9005
0080;RAL5015-5010
0081;RAL5015-3000
0082;RAL5015-2004
0083;RAL5015-7016
0084;RAL5015-6011
0085;RAL5015-7035
0086;RAL5015-5005
0087;RAL5015-5012
0088;RAL5015-5015
0089;RAL5015-9005
0090;RAL9005-5010
0091;RAL9005-3000
0092;RAL9005-2004
0093;RAL9005-7016
0094;RAL9005-6011
0095;RAL9005-7035
0096;RAL9005-5005
0097;RAL9005-5012
0098;RAL9005-5015
0099;RAL9005-9005
Benutzeravatar
tbone
Berater
Beiträge: 626
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64

Re: fortlaufenden Suffix nach Schema umbenennen

Beitrag von tbone »

HowTo:
- JScript aus Code-Bereich in Datei "RALRenamer.js" speichern
- Pfad zu Folder mit den zu behandelnden Dateien im Script anpassen (ganz unten)
- DOS Prompt öffnen und Script starten "cscript.exe <pathto>\RALRenamer.js"

Vielleicht geht es. o) Bitte mit Testdaten probieren, mehr als ein Durchlauf macht vermutlich
komische Sachen mit den Namen, Pipapo-Fehlerhandling ist auch nicht eingebaut.

Code: Alles auswählen

//#############################################################################
// RALRenamer.js
// https://www.haage-partner.de/forum/viewtopic.php?f=47&t=5520
//
// Rename files in a folder by..
// replacing the number part in the file name with specific text (RAL-Number).
// name_0000.ext --> name_RAL7035-5010.ext
// name_0001.ext --> name_RAL7035-3000.ext
// name_0002.ext --> name_RAL7035-200.ext
//
// v0.11 / 2021_11_24 - use greedy lookup for "_" in getNamePart()
// v0.1  / 2021_11_23 - initial version, tb
//#############################################################################

//#############################################################################
// methods
//#############################################################################
function getNumberToRALMap() {
	var numberToRAL = {};
	numberToRAL["0000"]="RAL7035-5010";
	numberToRAL["0001"]="RAL7035-3000";
	numberToRAL["0002"]="RAL7035-2004";
	numberToRAL["0003"]="RAL7035-7016";
	numberToRAL["0004"]="RAL7035-6011";
	numberToRAL["0005"]="RAL7035-7035";
	numberToRAL["0006"]="RAL7035-5005";
	numberToRAL["0007"]="RAL7035-5012";
	numberToRAL["0008"]="RAL7035-5015";
	numberToRAL["0009"]="RAL7035-9005";
	numberToRAL["0010"]="RAL3000-5010";
	numberToRAL["0011"]="RAL3000-3000";
	numberToRAL["0012"]="RAL3000-2004";
	numberToRAL["0013"]="RAL3000-7016";
	numberToRAL["0014"]="RAL3000-6011";
	numberToRAL["0015"]="RAL3000-7035";
	numberToRAL["0016"]="RAL3000-5005";
	numberToRAL["0017"]="RAL3000-5012";
	numberToRAL["0018"]="RAL3000-5015";
	numberToRAL["0019"]="RAL3000-9005";
	numberToRAL["0020"]="RAL2004-5010";
	numberToRAL["0021"]="RAL2004-3000";
	numberToRAL["0022"]="RAL2004-2004";
	numberToRAL["0023"]="RAL2004-7016";
	numberToRAL["0024"]="RAL2004-6011";
	numberToRAL["0025"]="RAL2004-7035";
	numberToRAL["0026"]="RAL2004-5005";
	numberToRAL["0027"]="RAL2004-5012";
	numberToRAL["0028"]="RAL2004-5015";
	numberToRAL["0029"]="RAL2004-9005";
	numberToRAL["0030"]="RAL7016-5010";
	numberToRAL["0031"]="RAL7016-3000";
	numberToRAL["0032"]="RAL7016-2004";
	numberToRAL["0033"]="RAL7016-7016";
	numberToRAL["0034"]="RAL7016-6011";
	numberToRAL["0035"]="RAL7016-7035";
	numberToRAL["0036"]="RAL7016-5005";
	numberToRAL["0037"]="RAL7016-5012";
	numberToRAL["0038"]="RAL7016-5015";
	numberToRAL["0039"]="RAL7016-9005";
	numberToRAL["0040"]="RAL6011-5010";
	numberToRAL["0041"]="RAL6011-3000";
	numberToRAL["0042"]="RAL6011-2004";
	numberToRAL["0043"]="RAL6011-7016";
	numberToRAL["0044"]="RAL6011-6011";
	numberToRAL["0045"]="RAL6011-7035";
	numberToRAL["0046"]="RAL6011-5005";
	numberToRAL["0047"]="RAL6011-5012";
	numberToRAL["0048"]="RAL6011-5015";
	numberToRAL["0049"]="RAL6011-9005";
	numberToRAL["0050"]="RAL5005-5010";
	numberToRAL["0051"]="RAL5005-3000";
	numberToRAL["0052"]="RAL5005-2004";
	numberToRAL["0053"]="RAL5005-7016";
	numberToRAL["0054"]="RAL5005-6011";
	numberToRAL["0055"]="RAL5005-7035";
	numberToRAL["0056"]="RAL5005-5005";
	numberToRAL["0057"]="RAL5005-5012";
	numberToRAL["0058"]="RAL5005-5015";
	numberToRAL["0059"]="RAL5005-9005";
	numberToRAL["0060"]="RAL5010-5010";
	numberToRAL["0061"]="RAL5010-3000";
	numberToRAL["0062"]="RAL5010-2004";
	numberToRAL["0063"]="RAL5010-7016";
	numberToRAL["0064"]="RAL5010-6011";
	numberToRAL["0065"]="RAL5010-7035";
	numberToRAL["0066"]="RAL5010-5005";
	numberToRAL["0067"]="RAL5010-5012";
	numberToRAL["0068"]="RAL5010-5015";
	numberToRAL["0069"]="RAL5010-9005";
	numberToRAL["0070"]="RAL5012-5010";
	numberToRAL["0071"]="RAL5012-3000";
	numberToRAL["0072"]="RAL5012-2004";
	numberToRAL["0073"]="RAL5012-7016";
	numberToRAL["0074"]="RAL5012-6011";
	numberToRAL["0075"]="RAL5012-7035";
	numberToRAL["0076"]="RAL5012-5005";
	numberToRAL["0077"]="RAL5012-5012";
	numberToRAL["0078"]="RAL5012-5015";
	numberToRAL["0079"]="RAL5012-9005";
	numberToRAL["0080"]="RAL5015-5010";
	numberToRAL["0081"]="RAL5015-3000";
	numberToRAL["0082"]="RAL5015-2004";
	numberToRAL["0083"]="RAL5015-7016";
	numberToRAL["0084"]="RAL5015-6011";
	numberToRAL["0085"]="RAL5015-7035";
	numberToRAL["0086"]="RAL5015-5005";
	numberToRAL["0087"]="RAL5015-5012";
	numberToRAL["0088"]="RAL5015-5015";
	numberToRAL["0089"]="RAL5015-9005";
	numberToRAL["0090"]="RAL9005-5010";
	numberToRAL["0091"]="RAL9005-3000";
	numberToRAL["0092"]="RAL9005-2004";
	numberToRAL["0093"]="RAL9005-7016";
	numberToRAL["0094"]="RAL9005-6011";
	numberToRAL["0095"]="RAL9005-7035";
	numberToRAL["0096"]="RAL9005-5005";
	numberToRAL["0097"]="RAL9005-5012";
	numberToRAL["0098"]="RAL9005-5015";
	numberToRAL["0099"]="RAL9005-9005";
	return numberToRAL;
}

//#############################################################################
function getNumberPart( filename ) {
	return filename.replace(/(.*?)(\d{4})(.*)/, "$2");
}

//#############################################################################
function getNamePart( filename ) {
	return filename.replace(/(.*)_(.*)/, "$1");
}

//#############################################################################
function getExtensionPart( filename ) {
	var ext = filename.replace(/(.*?)\.(.*)/, "$2");
	if (ext == filename) return ""; //no ext found
	return "."+ext;
}

//#############################################################################
function getNewNameForFile( filename, numberToRALMap ) {
	var namePart = getNamePart( filename );
	var numberPart = getNumberPart( filename );
	var extPart = getExtensionPart( filename );
	var ralReplacement = numberToRALMap[numberPart];
	if (!ralReplacement) {
		return null;
	}
	return namePart + "_" + ralReplacement + extPart;
}

//#############################################################################
function renameFilesInFolder( folderPath, numberToRALMap ) {
	var fso = new ActiveXObject("Scripting.FilesystemObject");
	var folderObj = fso.GetFolder(folderPath);

	WSH.Echo("Folder path: " + folderObj);
	WSH.Echo("File count : " + folderObj.Files.count);
	WSH.Echo("Renaming..");

	for(var e = new Enumerator(folderObj.Files); !e.atEnd(); e.moveNext()) {
		var fileObj = e.item();
		WSH.Echo( "    File: " + fileObj.name );
		var fileNameOld = fileObj.name;
		var fileNameNew = getNewNameForFile( fileNameOld, numberToRALMap);
		if (!fileNameNew) {
			WSH.Echo("E       Failed to find new name.");
			continue;
		}
		//WSH.Echo("    New name: " + fileNameNew);
		fileObj.name = fileNameNew;
	}
}

//#############################################################################
// main
//#############################################################################

renameFilesInFolder( "D:/tmp/2013_10_25_delme", getNumberToRALMap() );

WSH.Quit(0);

//#############################################################################
jstw
Beiträge: 5
Registriert: 22. Nov 2021 08:37
Betriebssystem: Windows Pro 64bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: Nach Schema umbenennen (Dateinamen über eine Liste ersetzen)

Beitrag von jstw »

Hallo tbone,

vom Prinzip her funktioniert es klasse!!

Bin kein Script- und RegEx-Experte.
Ich denke Du suchst nach dem "_", löscht dann die Zeichen danach und fügst dann Die "Suffixe" an?!

Ich habe halt dummerweise auch im Namen häufig Unterstiche.
Z.B. "7_schrank-mit-CNC-Aufnahmen_0034"

Könnte man auch nach dem letzten Unterstrich suchen und dann erst die Zeichen danach ersetzen?

VIELEN DANK!!!!
Benutzeravatar
tbone
Berater
Beiträge: 626
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64

Re: Nach Schema umbenennen (Dateinamen über eine Liste ersetzen)

Beitrag von tbone »

Ja, geht natürlich.. ich habe den Code-Snippet oben aktualisiert.
jstw
Beiträge: 5
Registriert: 22. Nov 2021 08:37
Betriebssystem: Windows Pro 64bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: Nach Schema umbenennen (Dateinamen über eine Liste ersetzen)

Beitrag von jstw »

Hallo tbone,

super - VIELEN DANK!!
Ich kann es im Moment leider nicht testen.
Bin geschäftlich unterwegs und bin gerade etwas "eingeschränkt" ;-)
Gebe Dir aber so schnell wie möglich Bescheid!!!!

Auf jeden Fall - VIELEN DANK!
Antworten