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

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

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

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

   

Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
За кодировки не скажу, ибо так не делаю: предпочитаю другие решения, которые не доставляют неудобств с кодировками, хотя и учитывают их.
 

Цитата:
Мне более удобно, когда сначала выделяется необходимые файлы и папки (из разных мест), а затем идет упаковка по списку. А так в скрипте надо постоянно нажимать отмену или ставить и убирать комментарий строки 35.

Мне показалось удобным повесить всё на одну кнопку, нет - так нет :) Тогда две кнопки:

Код:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\new.js
%WL "%T" "Files_list.lst"
C:\Windows\System32\WScript.exe,3
Создание списка
%COMMANDER_PATH%\Utils\  
 
-1


Код:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\new.js
"%T" "Files_list.lst"
C:\Windows\System32\WScript.exe,3
Упаковка по списку
%COMMANDER_PATH%\Utils\  
 
-1

Количество параметров определяют поведение. Наверное, проще повесить на клавиатуру, а не держать две кнопки, типа
Ctrl+Alt+Z - создание списка,
Ctrl+Alt+A - упаковка.
Хотя, возможно, у вас заведено отдельное меню для подобных задач.
 
Скрипт:

Код:
// %WL "%T" "Files_list.lst"
// "%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 oPattern;
var UnSortFileList;
var SortFileList;
 
// исходя из количества параметров определяем поведение
if (WScript.Arguments.length == 3)
{
  // читаем файл-список
  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();
  }
}
// если только два параметра, то пакуем
else if (WScript.Arguments.length == 2)
{
  // проверяем существование архива
  if (fso.FileExists(WScript.Arguments.Item(0) + "_backup.rar"))
  {
    // сообщаем, если существует
    shell.Popup("Файл _backup.rar уже существует!", 0, "Бэкап по списку", 48);
  }
  else
  {
    // если архива нет, то читаем новый список
    FileList = fso.OpenTextFile(WScript.Arguments.Item(0) + WScript.Arguments.Item(1), 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(0) + WScript.Arguments.Item(1), 2, true, -1);
    FileList.Write(SortFileList + "\r\n");
    FileList.Close();
    // запускаем упаковку
 
    // открывается окно консоли, но свёрнутым в панель задач
    shell.Run("\"%COMMANDER_PATH%\\Utils\\Rar.exe\" a -r -ep1 \"" + WScript.Arguments.Item(0) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(0) + WScript.Arguments.Item(1) + "\"", 2, true);
 
    // окно консоли скрыто, вообще никакой индикации - не очень хорошо
    //shell.Run("\"%COMMANDER_PATH%\\Utils\\Rar.exe\" a -r -ep1 \"" + WScript.Arguments.Item(0) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(0) + WScript.Arguments.Item(1) + "\"", 0, true);
 
    // открывается окно консоли (как обычное окно - активно)
    //shell.Run("\"%COMMANDER_PATH%\\Utils\\Rar.exe\" a -r -ep1 \"" + WScript.Arguments.Item(0) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(0) + WScript.Arguments.Item(1) + "\"", 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(0) + "_backup.rar\" " + "@\"" + WScript.Arguments.Item(0) + WScript.Arguments.Item(1) + "\"", 1, true);
 
    // удаляем список
    fso.DeleteFile(WScript.Arguments.Item(0) + WScript.Arguments.Item(1), 1);
    shell.Popup("Создание резервной копии завершено.", 0, "Бэкап по списку", 64);
  }
}
else
{
  shell.Popup("Неверное количество параметров!", 0, "Бэкап по списку", 48);
}
 
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;
}

Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 16:55 20-02-2015 | Исправлено: Skif_off, 16:57 20-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