Skif_off
Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: // %WL "%T" "Files_list.lst" var shell = new ActiveXObject("WScript.shell"); var fso = new ActiveXObject("Scripting.FileSystemObject"); var FileList = ""; var AddToFileList = ""; var AddList = ""; var AddTo = ""; var AddList = ""; var RetCodeP = ""; var oPattern; var UnSortFileList; var SortFileList; // читаем файл-список FileList = fso.OpenTextFile(WScript.Arguments.Item(0), 1, false, -1); AddToFileList = FileList.ReadAll(); FileList.Close(); // убираем слэш в конце строк oPattern = new RegExp("\\\\$", "gm"); AddList = AddToFileList.replace(oPattern, ""); // если новый список существует, то дописываем в него, иначе - создаём новый if (fso.FileExists(WScript.Arguments.Item(1) + WScript.Arguments.Item(2))) { AddTo = fso.OpenTextFile(WScript.Arguments.Item(1) + WScript.Arguments.Item(2), 8, false, -1); AddTo.Write(AddList); AddTo.Close(); } else { AddTo = fso.OpenTextFile(WScript.Arguments.Item(1) + WScript.Arguments.Item(2), 2, true, -1); AddTo.Write(AddList); AddTo.Close(); } // решение - паковать или нет RetCodeP = shell.Popup("Упаковать?", 0, "Бэкап по списку", 36); // если да if (RetCodeP == 6) { // то проверяем существование архива if (fso.FileExists(WScript.Arguments.Item(1) + "_backup.rar")) { // сообщаем, если существует shell.Popup("Файл _backup.rar уже существует!", 0, "Бэкап по списку", 48); } else { // если архива нет, то читаем новый список FileList = fso.OpenTextFile(WScript.Arguments.Item(1) + WScript.Arguments.Item(2), 1, false, -1); UnSortFileList = FileList.ReadAll(); FileList.Close(); // режем в массив UnSortFileList = UnSortFileList.split("\r\n"); // сортируем SortFileList = UnSortFileList.sort(); // оставляем уникальные SortFileList = unique(SortFileList); // массив в строку SortFileList = SortFileList.join("\r\n"); // убираем пустую строку в начале (хз, откуда она берётся, не пойму :) ) oPattern = new RegExp("^\\r\\n"); SortFileList = SortFileList.replace(oPattern, ""); // пишем новый список FileList = fso.OpenTextFile(WScript.Arguments.Item(1) + WScript.Arguments.Item(2), 2, true, -1); FileList.Write(SortFileList + "\r\n"); FileList.Close(); // запускаем упаковку // открывается окно консоли, но свёрнутым в панель задач shell.Run("\"%COMMANDER_PATH%\\Utils\\Rar.exe\" a -r -ep1 \"" + WScript.Arguments.Item(1) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(1) + WScript.Arguments.Item(2) + "\"", 2, true); // окно консоли скрыто, вообще никакой индикации - не очень хорошо //shell.Run("\"%COMMANDER_PATH%\\Utils\\Rar.exe\" a -r -ep1 \"" + WScript.Arguments.Item(1) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(1) + WScript.Arguments.Item(2) + "\"", 0, true); // открывается окно консоли (как обычное окно - активно) //shell.Run("\"%COMMANDER_PATH%\\Utils\\Rar.exe\" a -r -ep1 \"" + WScript.Arguments.Item(1) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(1) + WScript.Arguments.Item(2) + "\"", 1, true); // с использованием AskParam (не забыть исправить путь на свой!): вариант с запросом имени архива //shell.Run("\"%COMMANDER_PATH%\\Utils\\AskParam.exe\" /w /c\"Бэкап по списку\" /t\"_backup\" /p\"Имя файла:\" \"%ComSpec%\" \"%COMMANDER_PATH%\\Utils\\Rar.exe\" a -r -ep1 \"" + WScript.Arguments.Item(1) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(1) + WScript.Arguments.Item(2) + "\"", 1, true); // удаляем список fso.DeleteFile(WScript.Arguments.Item(1) + WScript.Arguments.Item(2), 1); shell.Popup("Создание резервной копии завершено.", 0, "Бэкап по списку", 64); } } function unique(input) { var o = {}; var l = input.length; var r = []; var i; for(i = 0; i < l; i += 1) { o[input[i]] = input[i]; } for(i in o) { r.push(o[i]); } return r; } | Кнопка: Код: TOTALCMD#BAR#DATA %COMMANDER_PATH%\Utils\new.js %WL "%T" "Files_list.lst" C:\Windows\System32\WScript.exe,3 new %COMMANDER_PATH%\UTILITIES\ -1 |
| Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 18:38 17-02-2015 | Исправлено: Skif_off, 18:40 17-02-2015 |
|