Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Batch-Programmierung: Dateinamen mit Variable versehen





Frage

Hallo! Ich habe folgendes Problem bei der Batch-Programmierung: In einem Ordner und diversen Unterordnern befinden sich mehrere Dateien mit dem Namen "1.tif". Diese Dateien sollen nun in ein Verzeichnis "C:\TIF" verschoben werden. Da die Dateien aber alle den gleichen Dateiname haben sollen sie umbenannt werden in "1(1).tif", "1(2)".tif usw. Der Programmcode sieht bisher so aus: [quote]md C:\TIF FOR /R %%I IN (*.tif) DO MOVE %%I C:\TIF[/quote] Vielen Dank für eure Hilfe! Paulo

Antwort 1 von kicia

Meine Methode ist nicht sehr kompakt, funktioniert aber:
Folgenden Code in eine Datei mit der Endung .JS kopieren,
rechtsklick drauf und "öffnen".
("C:\\DeinOrdner" muss natürlich ersetzt werden)

var fso = new ActiveXObject("Scripting.FileSystemObject");

getFiles("C:\\DeinOrdner");

function getFiles(fld)
{
	var folder  = fso.getFolder(fld);
	var files   = new Enumerator(folder.Files);
	var folders = new Enumerator(folder.SubFolders);
	var Counter = 0;

	for (; !files.atEnd(); files.moveNext())
	{
		if(files.item().name == "1.tif")
		{
			Counter++;
			// files.item().copy("h:\\temp\\bild_" + Counter.toString() +  ".tif");
			files.item().move("h:\\temp\\bild_" + Counter.toString() +  ".tif");
		}
	}

	for (; !folders.atEnd(); folders.moveNext())
	{
		getFiles(folders.item().path);
	}
}


Antwort 2 von Paulo87

Danke für den Vorschlag, aber es kommt ein Fehler:

Zeile 18
Zeichen 10
Die Datei ist bereits vorhanden

Antwort 3 von kicia

ups, tut mir leid. Ich hoffe es ist nichts kaputt gegangen.

"var Counter = 0;" muss natürlich außerhalb der "function getFiles(fld)" stehen, sonst wird er bei jedem neuen Verzeichnis wieder auf 0 gesetzt.
Also:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var Counter = 0;

getFiles("C:\\DeinOrdner");

function getFiles(fld)
{
	var folder  = fso.getFolder(fld);
	var files   = new Enumerator(folder.Files);
	var folders = new Enumerator(folder.SubFolders);

	for (; !files.atEnd(); files.moveNext())
	{
...

usw. (Das folgende bleibt gleich)

Antwort 4 von Paulo87

Perfekt. Vielen Dank!!!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: