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)
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
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:
usw. (Das folgende bleibt gleich)
"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!!!