Приветствую Вас Гость | Сегодня: 27.05.2016, Пятница | RSS
   
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 13 из 13«12111213
Форум » Total Commander » Total Commander Image » Скрипты (Тестирование скриптов)
Скрипты
Andrey_AДата: Среда, 12.10.2011, 21:18 | Сообщение # 1
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 427
Тестирование скриптов




Скрипты - уникальный инструмент для достижения различных целей в работе с файлами и не только, особенно в файловом менеджере, даже если вы ничего раньше об этом ничего не слышали и не знали, то путём простых движений вы можете оптимизировать свои действия
Тема тестирования скриптов создана для увеличения функциональности Total Commander
Каждый может выложить свой скрипт написанный на любом языке: vbs, js, hta, au3,ahk, bat,cmd... главное, чтобы он относился как-то к Total Commander, можно было им воспользоваться и к нему было должное описание к применению.
Каждый может протестировать, дать свой комментарий и ...[move]если есть интересная идея, вы можете поделиться ей и заказать скрипт, а вдруг она покажется интересной для авторов...[/move]
Всё это делается для тех, кто хочет экономить время и автоматизировать работу
Огромное спасибо участникам, авторам и всем повлиявшим на тему











Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
FlasherДата: Воскресенье, 26.02.2012, 13:17 | Сообщение # 241
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Quote (yaroslavi)
Я тщательно скопировал текст Вашего скрипта, но там были указаны одинарные знаки %.
Я добавил еще по одному: %%COMMANDER_PATH%%\Programs\Text\Texter2\Texter2.exe
Подведём итог:
Quote ("Скрипт")
' В поле "Команда" после пути к скрипту через пробел написать путь к редактору
' Пример: %COMMANDER_PATH%\Scripts\OpenEditor&Paste.vbs; "%COMMANDER_PATH%\Programs\Editors\Texter2\Texter2.exe"
Quote (yaroslavi)
меня тоже часто раздражают вопросы людей, не пытающихся вникнуть в суть вопроса
Не нужен в поле Команда сдвоенный процент!

Проблема неправильной передачи текста из буфера - это не проблема скрипта. То же самое самостоятельным копипастом даёт аналогичный результат?


Сообщение отредактировал Flasher - Воскресенье, 26.02.2012, 13:25
Награды: 3
yaroslaviДата: Воскресенье, 26.02.2012, 13:32 | Сообщение # 242
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Quote (Flasher)
написано же "Пример". Это значит, что путь может быть совершенно другим. В сборке пути иные, смотрите либо сопоставляя с папками ТС, либо с предыдущими скриптами


Если Вы обратили внимание на мой скриншот, то там прописан несколько иной путь, чем у Вас. Это означает, что, несмотря на сфою неофитскую неосведомленность, подобные вещи я все-таки понимаю...
Награды: 1
Пользователь из города: Николаев
FlasherДата: Воскресенье, 26.02.2012, 13:37 | Сообщение # 243
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
yaroslavi, да, вот буквально перед прочтением поста обратил внимание и удивился, зачем там параметр прописан в обоих полях одновременно. При таких условиях скрипт второй параметр просто проигнорирует.

Сообщение отредактировал Flasher - Воскресенье, 26.02.2012, 13:41
Награды: 3
yaroslaviДата: Воскресенье, 26.02.2012, 13:41 | Сообщение # 244
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Quote (Flasher)
Не нужен в поле Команда сдвоенный процент!


Сдвоенный процент стоит у меня не в поле "Команда", а в поле "Параметр", поскольку об этом вчера писал Андрей: "в параметрах надо удваивать %%". Без него вылетает ошибка, о которой я писал раньше: "" "OMMANDER_PATHPrograms\Text\Texter2\Texter2.exe" не существует. Создать новый с таким именем?""

Quote (Flasher)
То же самое самостоятельным копипастом даёт аналогичный результат?


Нет, обычным способом все вставляется безо всякого мусора...
Награды: 1
Пользователь из города: Николаев
FlasherДата: Воскресенье, 26.02.2012, 13:46 | Сообщение # 245
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Quote (yaroslavi)
Сдвоенный процент стоит у меня не в поле "Команда", а в поле "Параметр"
Тем не менее в шапке скрипта дана чёткая информация, которой нужно следовать, чтобы потом не выяснять, в чём проблема. К тому же для написания переменных окружения в поле "Параметры" должны быть определённые условия, благо в моём скрипте используется метод, который этой условности удовлетворяет.
Сам TC не конвертирует переменные среды из поля "Параметры"!

Quote (yaroslavi)
Нет, обычным способом все вставляется безо всякого мусора...
А по Shift+Insert?
Лично я проблему, сколько не пытался, воспроизвести не смог. Текст передаётся без ошибок.


Сообщение отредактировал Flasher - Воскресенье, 26.02.2012, 13:57
Награды: 3
Andrey_AДата: Воскресенье, 26.02.2012, 13:54 | Сообщение # 246
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 427
yaroslavi, есть ещё и такой вариант :)
http://cjgrey.ru/forum/44-179-4689-16-1327578241


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
FlasherДата: Воскресенье, 26.02.2012, 13:58 | Сообщение # 247
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Andrey_A, полторы секунды? Мой скрипт вообще никакого лишнего времени не добавляет..

Сообщение отредактировал Flasher - Воскресенье, 26.02.2012, 14:03
Награды: 3
Andrey_AДата: Воскресенье, 26.02.2012, 14:03 | Сообщение # 248
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 427
Flasher, Да твой скрипт самый лучший, никто и не сомневался! GOOD
Я просто не выдержал, глядя на посты и не удержался подлить масла... ah


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
FlasherДата: Воскресенье, 26.02.2012, 14:08 | Сообщение # 249
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Да? Ну, тогда простите меня все за всё! Сегодня прощёное воскресенье.
Награды: 3
Andrey_AДата: Воскресенье, 26.02.2012, 14:14 | Сообщение # 250
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 427
Прощаю :) , да и Бог простит!
И ты меня, прости за всё, за всё!


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
FlasherДата: Воскресенье, 26.02.2012, 14:32 | Сообщение # 251
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Andrey_A, даже за это? Шучу.)
Конечно, прощаю , и Бог простит!
Награды: 3
yaroslaviДата: Воскресенье, 26.02.2012, 17:58 | Сообщение # 252
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Quote (Flasher)
yaroslavi, да, вот буквально перед прочтением поста обратил внимание и удивился, зачем там параметр прописан в обоих полях одновременно. При таких условиях скрипт второй параметр просто проигнорирует.


Спасибо, как только убрал из поля "Параметр" путь к Текстеру, все сразу заработало нормально...

Добавлено (26.02.2012, 15:11)
---------------------------------------------
Господа, большое спасибо за помощь и простите и Вы меня, что задал Вам столько мороки. Зато узнал массу нового.


Сообщение отредактировал yaroslavi - Воскресенье, 26.02.2012, 18:03
Награды: 1
Пользователь из города: Николаев
Andrey_AДата: Пятница, 23.03.2012, 18:28 | Сообщение # 253
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 427
Обновлены вспомогательные скрипты:
FunctionsPlus.vbs (Версия: 2.3 от 22.03.2012) - файл с различными функциями, которые можно использовать в других скриптах
FunctionsINIRWS.vbs (Версия: 1.4 от 19.03.2012) - файл с функциями чтения и записи INI файлов + FunctionsINITextRWS.vbs
скачать можете в шапке темы


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
SerJoДата: Четверг, 31.05.2012, 09:34 | Сообщение # 254
Подполковник
Зареген: 16.09.2011
Всего сообщений: 36
Andrey_A, Извини за оффтоп, в личку не помещается:

Code
/*
Скрипт проверяет свободное место на диске и если места меньше указанного.
Есть возможность проверять свободное место по размеру проверочного файла (например, базы данных)
BorisMor(c) 06.02.2012
*/
//============================ Параметры ============================
var char_driver = "C";  // буква диска
var min_free = 8000;  // сколько должно быть минимум свободного места
var test_file = "";  // тестовый файл.  Если он больше минимума то по нему проверяют место
var value_in = "M";  // в чем прописан минимальный размер: M - мегабайты, G - гигабайты
// ====================================================================

function get_koef(value)
{   
/* Возрщает число на которое надо поделить байты что бы получить мегабайты или гигабайты
       value может быть: M - мегабайты, G - гигабайты   
    */    
    if(value=="M") return 1024 * 1024;
    if(value=="G") return 1024 * 1024 * 1024
}   

function get_date(value)
{
   // возвращает дату:  ДД.ММ.ГГГГ ЧЧ:MM
   if(value==undefined)
    var dt = new Date();
   else
    var dt = new Date(value);

   var minute = dt.getMinutes();
   var hours = dt.getHours();
   var month = dt.getMonth()+1;
   var day = dt.getDate();

   if(minute < 10)    minute  = "0" + minute;
   if(hours < 10)    hours  = "0" + hours;
   if(month < 10)    month  = "0" + month;
   if(day < 10)    day  = "0" + day;

   var s = day + '.' +  month+'.'+ dt.getYear()+' '+hours+':'+    minute;
   return s;
}

var ForRead = 1;   // режим доступа до файла - чтения
var ForWriting  = 2;   // режим доступа до файла - запись
var wsh = WScript.CreateObject("WScript.Shell");                // Shell объект
var fso = WScript.CreateObject("Scripting.FileSystemObject");   // доступ к файлам
var net = WScript.CreateObject("WScript.Network");  // сесть

var ComputerName = net.ComputerName;    // имя компьютера
var send_messge = "NET SEND Serjo \"Внимание! \nНа компютере " + ComputerName +   
" требуется очистить место на диcке " + char_driver + ":\\\ \nОбратитесь к администратору. \"";

// --- Получить каталог скрипта ---
var sDirRun = WScript.ScriptFullName;
sDirRun = sDirRun.substr(0,sDirRun.lastIndexOf("\\")+1);
// ---------------------------------------

// ----- создать лог -----
var name_file_log = sDirRun + fso.GetBaseName(WScript.ScriptFullName) + ".log";
if(fso.FileExists(name_file_log))    
try {   
fso.DeleteFile(name_file_log);    // удаляем старый лог файл   
}   
catch(e) {   
WScript.Echo("Ошибка при удаление старого лога \n" + name_file_log)
}
var log = fso.OpenTextFile(name_file_log, ForWriting, true);  // новый лог файла
// --------------------------

log.WriteLine(get_date() + " - Запуск");   

kof = get_koef(value_in);
value_name = " " + value_in + "b";
     
if(! fso.DriveExists(char_driver))
{
   log.WriteLine("Указанного в параметрах диска " + char_driver + ":\\ нет !!!");
   WScript.Quit();
}
     
oDrive = fso.GetDrive(char_driver);
var FreeSpace = oDrive.FreeSpace / kof;    // свободно на диске в Мб
log.WriteLine("Свободно " + FreeSpace + value_name );

// Проверка тестового файла
if(test_file!="")
{
   test_file = fso.GetAbsolutePathName(test_file); // переводим относительный путь в прямой   
   log.WriteLine("Тестовый файл: " + test_file);
   if(fso.FileExists(test_file))
   {
    oFile = fso.GetFile(test_file);
    size_test_file = oFile.Size / kof
    if(size_test_file > min_free) min_free = size_test_file;
   }
   else
    log.WriteLine("Файл не найден");   
}   
     
log.WriteLine("Требуется не менее "+ min_free + value_name);
if (FreeSpace < min_free)
{
   try{
    log.WriteLine(send_messge);
    var WshExec = wsh.Exec(send_messge);
   }
   catch(e)
   {
    log.WriteLine("Ошибка при отправке сообщения - " + e.description);   
   }      
}
log.WriteLine(get_date() + " - Окончание");    


Требуется, чтоб отправка сообщения была нескольким пользователям сети, можно чтоб не логировалось остальные, а только первый. Модифицируй с комментариями пожалуйста




Сообщение отредактировал SerJo - Четверг, 31.05.2012, 09:35
Награды: 1
Andrey_AДата: Пятница, 01.06.2012, 18:09 | Сообщение # 255
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 427
Quote (SerJo)
Модифицируй с комментариями пожалуйста

Постараюсь через несколько дней - только приехал с сессии))


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
SerJoДата: Вторник, 05.06.2012, 09:41 | Сообщение # 256
Подполковник
Зареген: 16.09.2011
Всего сообщений: 36
Andrey_A,
спасибо, гуру))

Добавлено (05.06.2012, 09:41)
---------------------------------------------
Маленькая поправочка, и чтоб выдавало свободное место при сообщении)) Буду признателен ;)


Награды: 1
Andrey_AДата: Вторник, 05.06.2012, 18:57 | Сообщение # 257
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 427
Скрипт на js, я с js не очень - чтобы получилось на 100% придётся переводить в vbs, но времени нет...
На первый взгляд немного вставил...

Code
/*
Скрипт проверяет свободное место на диске и если места меньше указанного.
Есть возможность проверять свободное место по размеру проверочного файла (например, базы данных)
BorisMor(c) 06.02.2012
*/
//============================ Параметры ============================
var char_driver = "C";  // буква диска
var min_free = 8000;  // сколько должно быть минимум свободного места
var test_file = "";  // тестовый файл.  Если он больше минимума то по нему проверяют место
var value_in = "M";  // в чем прописан минимальный размер: M - мегабайты, G - гигабайты
// ====================================================================

function get_koef(value)
{     
/* Возрщает число на которое надо поделить байты что бы получить мегабайты или гигабайты
         value может быть: M - мегабайты, G - гигабайты     
      */      
      if(value=="M") return 1024 * 1024;
      if(value=="G") return 1024 * 1024 * 1024
}     

function get_date(value)
{
     // возвращает дату:  ДД.ММ.ГГГГ ЧЧ:MM
     if(value==undefined)
      var dt = new Date();
     else
      var dt = new Date(value);

     var minute = dt.getMinutes();
     var hours = dt.getHours();
     var month = dt.getMonth()+1;
     var day = dt.getDate();

     if(minute < 10)    minute  = "0" + minute;
     if(hours < 10)    hours  = "0" + hours;
     if(month < 10)    month  = "0" + month;
     if(day < 10)    day  = "0" + day;

     var s = day + '.' +  month+'.'+ dt.getYear()+' '+hours+':'+    minute;
     return s;
}

var ForRead = 1;   // режим доступа до файла - чтения
var ForWriting  = 2;   // режим доступа до файла - запись
var wsh = WScript.CreateObject("WScript.Shell");                // Shell объект
var fso = WScript.CreateObject("Scripting.FileSystemObject");   // доступ к файлам
var net = WScript.CreateObject("WScript.Network");  // сесть

var ComputerName = net.ComputerName;    // имя компьютера
var send_messge = "NET SEND Serjo \"Внимание! \nНа компютере " + ComputerName +     
" требуется очистить место на диcке " + char_driver + ":\\\ \nОбратитесь к администратору. \"";

var send_messge2 = // здесь прописываешь сообщение 2-му пользователю, на подобе send_messge
var send_messge3 = // 3-му...

// --- Получить каталог скрипта ---
var sDirRun = WScript.ScriptFullName;
sDirRun = sDirRun.substr(0,sDirRun.lastIndexOf("\\")+1);
// ---------------------------------------

// ----- создать лог -----
var name_file_log = sDirRun + fso.GetBaseName(WScript.ScriptFullName) + ".log";
if(fso.FileExists(name_file_log))      
try {     
fso.DeleteFile(name_file_log);    // удаляем старый лог файл     
}     
catch(e) {     
WScript.Echo("Ошибка при удаление старого лога \n" + name_file_log)
}
var log = fso.OpenTextFile(name_file_log, ForWriting, true);  // новый лог файла
// --------------------------

log.WriteLine(get_date() + " - Запуск");     

kof = get_koef(value_in);
value_name = " " + value_in + "b";
         
if(! fso.DriveExists(char_driver))
{
     log.WriteLine("Указанного в параметрах диска " + char_driver + ":\\ нет !!!");
     WScript.Quit();
}
         
oDrive = fso.GetDrive(char_driver);
var FreeSpace = oDrive.FreeSpace / kof;    // свободно на диске в Мб
log.WriteLine("Свободно " + FreeSpace + value_name );

// Проверка тестового файла
if(test_file!="")
{
     test_file = fso.GetAbsolutePathName(test_file); // переводим относительный путь в прямой     
     log.WriteLine("Тестовый файл: " + test_file);
     if(fso.FileExists(test_file))
     {
      oFile = fso.GetFile(test_file);
      size_test_file = oFile.Size / kof
      if(size_test_file > min_free) min_free = size_test_file;
     }
     else
      log.WriteLine("Файл не найден");     
}     
         
log.WriteLine("Требуется не менее "+ min_free + value_name);
if (FreeSpace < min_free)
{
     try{
      log.WriteLine(send_messge);
      var WshExec = wsh.Exec(send_messge);
        
      log.WriteLine(send_messge2);   
      var WshExec = wsh.Exec(send_messge2); // Это 2-му
        
      log.WriteLine(send_messge3);   
      var WshExec = wsh.Exec(send_messge3); // Это 3-му
     }
     catch(e)
     {
      log.WriteLine("Ошибка при отправке сообщения - " + e.description);     
     }        
}
log.WriteLine(get_date() + " - Окончание");  


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
SerJoДата: Среда, 06.06.2012, 09:32 | Сообщение # 258
Подполковник
Зареген: 16.09.2011
Всего сообщений: 36
Andrey_A, спасибо. позже опрубую. Я таким же методом оглашал send_messge1,2, но так как не зная синтаксиса js незнал как записать в лог :)

Награды: 1
Форум » Total Commander » Total Commander Image » Скрипты (Тестирование скриптов)
Страница 13 из 13«12111213
Поиск:

Copyright by Grey © 2016

Гость
Мини-Чат