Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Total Commander (Часть 8)

Модерирует : gyra, Maz

articlebot (20-03-2016 21:01): Обсуждение продолжается в части 9  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

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
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Total Commander (Часть 8)
articlebot (20-03-2016 21:01): Обсуждение продолжается в части 9


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru