|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Указание пути в скрипте на JS. |
|
VBS/WSH/JS - Указание пути в скрипте на JS.
|
Новый участник Сообщения: 18 |
Профиль | Отправить PM | Цитировать Здравствуйте, на широких просторах интернета нашел скрипт ,
основной задачей которого является "Поиск дубликатов файлов по размеру и их побайтное сравнение посредством штатной утилиты "fc" Скрипт запускается из командной строки : cscript.exe //nologo ads.js c:\Windows\ > users_duplicates.txt Запустить скрипт с консольным интерфейсом, сам скрипт ads, путь для проверки и txt файл для логгирования дубликатов. Как в скрипте жестко указать путь,чтобы не запускать его каждый раз из командной строки а подсунуть в планировщик и выполнять его раз в сутки к примеру. Пытался жестко прописывать путь, в различных вариациях var path = c:\Windows\; и тд в том же духе. , не получается... Со скриптами не работал,пока с ними на ВЫ. Заранее спасибо за помощь. var path = WScript.Arguments(0); var fso = WScript.CreateObject("Scripting.FileSystemObject"); var shell = WScript.CreateObject("WScript.Shell"); var min_file_size = 1024; // минимальный размер файла для проверки var files = new Array; WScript.StdOut.WriteLine("Поиск одинаковых файлов в " + path); scan(path); WScript.StdOut.WriteLine("Выбрано файлов для сравнения " + files.length); process(); WScript.Quit(0); function scan(path) { var folder = fso.GetFolder(path); for(var e = new Enumerator(folder.Files); !e.atEnd(); e.moveNext()) if (e.item().Size >= min_file_size) files.push(e.item()); for(var e = new Enumerator(folder.SubFolders); !e.atEnd(); e.moveNext()) scan(e.item().Path); } // сравнивает по возрастанию размера файла function sort_by_size_asc(a,b) { if (a.size < b.size) return (-1); if (a.size > b.size) return 1; return 0; } // сравнивает по убыванию размера файла function sort_by_size_desc(a,b) { if (a.size > b.size) return (-1); if (a.size < b.size) return 1; return 0; } // обработка списка файлов function process(){ var total_count = 0, total_bytes = 0; files.sort(sort_by_size_desc); while (files.length > 1) { var count = 0; var fc = 0; for (var i = 1; i < files.length && files[0].Size == files[i].Size;) { fc = shell.Run("fc /b \"" + files[0].ParentFolder + "\\" + files[0].Name + "\" \"" + files[i].ParentFolder + "\\" + files[i].Name + "\"",0,true); if (fc == 0) { // файлы одинаковые WScript.StdOut.WriteLine(files[i].ParentFolder + "\\" + files[i].Name); files.splice(i,1); ++count; } else ++i; } if (count) { // найдены копии файла files[0] WScript.StdOut.WriteLine(files[0].ParentFolder + "\\" + files[0].Name); var extra_bytes = files[0].Size * count; WScript.StdOut.WriteLine("> " + ++count + " одинаковых файлов (" + files[0].Size + " байт в каждом, " + extra_bytes + " байт в копиях)"); ++total_count; total_bytes += extra_bytes; } files.shift(); } WScript.StdOut.WriteLine("Всего " + total_bytes + " байт в " + total_count + " копиях файлов"); } |
|
Отправлено: 08:39, 27-12-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать DMBS, для поиска дубликатов воспользуйтесь лучше утилитой CloneSpy.
Цитата DMBS:
2. Вы никак не избавитесь от командной строки, пока будете продолжать делать перенаправление вывода результатов во внешний файл. Цитата DMBS:
Цитата DMBS:
|
|||
Отправлено: 09:06, 27-12-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать Спасибо за ответ, Программ, конечно же много не спорю и стандартный TotalCommanderдаже может помочь в этой ситуации,
находил и много исходных кодов с codeguru , которые можно было редактировать под свои задачи. Нужен именно скрипт на VB или JS. |
Отправлено: 09:29, 27-12-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать DMBS, сравнивать по «fc.exe» при наличии дубликатов накладно. Лучше считать хэш MD5 и сравнивать по нему.
|
Отправлено: 09:37, 27-12-2013 | #4 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать Согласен, сканирование папки Windows данным скриптом занимает порядка 3-4 часов))FC очень долго проводит сравнение больших файлов. В сторону md5 смотрел,когда хотел программу написать на с# , куда копать в JS в данном направлении честно понятия не имею!
|
|
Отправлено: 09:44, 27-12-2013 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Копать нужно в сторону бесплатных компонентов, например, Microsoft CAPICOM 2.1.0.2: Download Security Update for CAPICOM (KB931906) from Official Microsoft Download Center (не уверен в наличии, возможности установки и работоспособности под Windows 7 и выше) или XStandard MD5 Component. Либо использовать PowerShell, где вычисление MD5 доступно посредством .Net.
|
Отправлено: 11:05, 27-12-2013 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ошибка в скрипте JS определения размера экрана | zion87 | Вебмастеру | 1 | 18-02-2013 22:48 | |
[решено] JS. Как установить onblur из JS? | Sanchos | Вебмастеру | 2 | 04-07-2010 13:16 | |
Указание пути Programm Files при установкe Winows XP | Sel4 | Автоматическая установка Windows 2000/XP/2003 | 1 | 19-04-2009 08:22 | |
Не загружаются "тяжелые" приложения в Win2k -журнал выдает указание на файл ntdll.dll | zuluss | Программное обеспечение Windows | 10 | 12-08-2005 13:58 | |
Указание прокси в свойствах обозревателя | Guest | Хочу все знать | 3 | 26-03-2003 01:52 |
|