Mehrere gleiche Dateinamen mit versiedenen Endungen auf einmal ändern

gianfranco0104

Erfahrenes Mitglied
Stehe mal wieder vor einem Problem.

beim Auslesen und Überprüfen ob alle Dateien mit entsprechenden Endungen vorhanden sind nutze ich folgenden Code:

Javascript:
var possibleFileExts = ['cnc.01np', 'cnc.02np', 'cnc.03np', 'cnc.04np', 'cnc']; //cnc + np Files
var cncFilesExist = possibleFileExts.every(function (fileExt) {
  return renFile.FileExists("C:\\cnc\\USER\\projData\\" + fileNameOpen + "." + fileExt);
});
Soweit klappt das.
Jetzt würde ich aber gerne alle Dateien umbenennen (Dateiendung bleibt aber unterschiedlich). Einzeln würde es ja gehen, aber es muss doch auch so gehen, dass ich alle gleichzeitig ändern kann, ohne die Endungen zu berühren.
Habe es wie folgt probiert. allerdings wird dann nur die Datei mit der ersten deklarierten Endung ("cnc.01") renamed.
Hinweis: Bei FSO gibt es kein RENAME, es wird mit Move gemacht. Mein Versuch:
Javascript:
        var possibleFileExts = ['cnc.01np', 'cnc.02np', 'cnc.03np', 'cnc.04np', 'cnc']; //cnc + np Files
        var cncFilesExist = possibleFileExts.every(function (fileExt) {
          return renFile.MoveFile(("C:\\cnc\\_TEMP\\projData\\" + fleName + "." + fileExt), ("C:\\cnc\\_TEMP\\projData\\" + fileNameOpen + "." + fileExt));
        });
 
Hallo,

wenn ich micht recht erinnere, dann ist das doch mein Code-Stückchen, oder? ;)

Erst einmal begehst du den Fehler, dass du Array.prototype.every() nutzt. Diese Funktion ist dazu da, um zu überprüfen, ob alle Elemente innerhalb eines Arrays eine Voraussetzung (gegeben durch die Callback-Fkt.) erfüllen.
every() bricht bei dem ersten "falsy" Wert (=ein Wert, der in einem booleschen Kontext zu false evaluiert) ab, den die Callback-Funktion zurückgibt. Ich weiß nicht, was bzw. ob überhaupt MoveFile etwas zurückgibt.

Für deinen neuen Anwendungsfall (=Umbennenen) würde ich forEach() vorschlagen.
Javascript:
var PROJECT_PATH = "C:\\cnc\\_TEMP\\projData\\";
var cncFilesExist = possibleFileExts.forEach(function (fileExt) {
	var oldName = PROJECT_PATH + fleName + "." + fileExt;
	var newName = PROJECT_PATH + fileNameOpen + "." + fileExt;
	renFile.MoveFile(oldName, newName);
});
 
Hi, richtig, dein Code. Habe aber auch nicht mein gesagt :-D
Ich werde es mal so probieren. Danke für den Tipp.
Melde mich, wenn es geklappt hat.

UPDATE:
Klappt wunderbar. Danke :)
Ein schönes, restl. Wochenende noch.
 
Zuletzt bearbeitet:
Zurück