Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Надо скопировать файлы из одной папки в другую, но только если их нет в третьей (http://forum.oszone.net/showthread.php?t=215257)

rromms 09-09-2011 18:20 1749823

Надо скопировать файлы из одной папки в другую, но только если их нет в третьей
 
Здравствуйте!

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

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

SignFJ 09-09-2011 23:33 1749993

Справочника по 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 1750709

Код:

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 1751042

megaloman,
Спасибо огромное!
У меня гораздо более громоздко получилось...


Время: 15:12.

Время: 15:12.
© OSzone.net 2001-