PDA

Показать полную графическую версию : [решено] Надо скопировать файлы из одной папки в другую, но только если их нет в третьей


rromms
09-09-2011, 18:20
Здравствуйте!

Такая стоит задача:
Надо скопировать файлы из одной папки в другую, но только если этих файлов нет в третьей папке.
Папки каждый раз будут те же самые.
Имена файлов, которые надо копировать, заранее неизвестны, но могут попасться ненужные двойники
Сравнивать можно как угодно - по имени или по хешу.
Как сравнить файлы - нашел скрипт на VBS , а как их поочередно перебрать - никак...

Заранее спасибо всем откликнувшимся!

SignFJ
09-09-2011, 23:33
Справочника по WSH нет под рукой.
Воспользуйся подобным перебором.

var fso, f, f1, fc, s;
fso = WScript.CreateObject("Scripting.FileSystemObject");;
//указывай свою папку
f = fso.GetFolder("C:");
fc = new Enumerator(f.files);
s = "";
for (; !fc.atEnd(); fc.moveNext()) {
//fc.item() возвратит полное имя файла
//если нужно только одно имя, то бери fc.item().name
s += fc.item(); s += "\n";
}
WScript.Echo(s);

megaloman
11-09-2011, 12:36
Dir1 = "D:\Delete\Dir1"
Dir2 = "D:\Delete\Dir2"
Dir3 = "D:\Delete\Dir3"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Files = FSO.GetFolder(Dir1).Files

For Each f In Files
If Not FSO.FileExists(Dir3 + "\" + f.Name) Then FSO.CopyFile f, Dir2 + "\" + f.Name, True
Next

MsgBox "Копирование выполнено"

rromms
11-09-2011, 21:42
megaloman,
Спасибо огромное!
У меня гораздо более громоздко получилось...




© OSzone.net 2001-2012