Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Windows Script Host
Goto page Previous  1, 2, 3, 4, 5, 6 ... 25, 26, 27  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
KoS



Joined: 13 Jun 2006
Posts: 9
Location: Киев

Post (Separately) Posted: Tue Jun 13, 2006 17:40    Post subject: Reply with quote

Спасибо за скрипт, но он не работает
Строка: 9
Символ: 1
Ошибка: Файл не найден
Код: 800А0035

Еще я не понимаю, как этот кусок кода можна всунуть в остальной скрипт, если нужен параметр (я просто не разбираюсь в параметрах вызова файлов, и, в частности, не знаю, что это за параметр %L)

И еще - как должен открыться текстовый файл, если не было команды его создать? Он автоматически создается?
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Tue Jun 13, 2006 17:50    Post subject: Reply with quote

Работает всё. Просто после добавления этого скрипта в панель, нажми на новой кнопке правой кнопкой мыши, выбери "изменить", и нажми F1 - увидишь справку.
Потом добавь %L в поле "параметры".
Back to top
View user's profile Send private message
KoS



Joined: 13 Jun 2006
Posts: 9
Location: Киев

Post (Separately) Posted: Tue Jun 13, 2006 18:33    Post subject: Reply with quote

Спасибо огромное. Работет. Я просто не туда вводил параметр - затупил. Теперь буду пробовать со своим скриптом.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Jun 14, 2006 09:43    Post subject: Reply with quote

KoS
Лучше напиши, что ты скриптом делаешь. Возможно, мы тебе покажем более красивые варианты решения твоей задачи.
Back to top
View user's profile Send private message
KoS



Joined: 13 Jun 2006
Posts: 9
Location: Киев

Post (Separately) Posted: Wed Jun 14, 2006 14:08    Post subject: Reply with quote

У меня есть директория с вложеными папками, где хранятся обои рабочего стола. Я полгода назад написал небольшой скриптик, который открывает эту папку, показывает все файлы и случайным образом выбирает файл (случайное число раз нажимает кнопку "ВНИЗ" на клаве). Количество картинок, из которых случайно выбиралась одна, я вводил вручную. Тогда это было не критично, так как новые обои поступали редко.

Потом я понял, что не все обои хороши как обои, хоть я их и сортировал, и удалял некрасивые. Некоторые хороши художественно, но не подходят. Некоторые, хоть и симпотичные, но на 1600х1200 мутноваты итд. Тогда я время от времени стал перед именем файла ставить балл от 1 до 5. 5 - обои, которые мне ООЧень нравятся. 3 - нормальные. 2 - немного раздражают итд. И вот пару дней назад решил обновить свой старый скрипт.

Выборка обоев идет с помощью регулярных выражений в фильтре. Оставалось лишь ввести выбор случайного из даного количества, так как сегодня, например, я хочу обоину с рейтингом 5, а завтра, например, мне будет все-равно, и соглашусь на любую от 3 до 5.

С помощью твоего скрипта у меня все заработало, только мне пришлось его дополнить снизу выбором случайного числа и запихнуть в меню "Запуск", так там можно было поставить параметр. А первая часть скрипта вызывается с панели, открывает новую вкладку, там показывает обои, выделяет их и запускает по хоткею скрипт с узнаванием кол-ва файлов и выбором случайной обои.

Весь скрипт заточен на постоянные директории и на определенные комбинации клавиш. Хоть это и дурной тон, но делал-то я его для себя.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Jun 14, 2006 14:35    Post subject: Reply with quote

Quote:
... только мне пришлось его дополнить снизу выбором случайного числа и запихнуть в меню "Запуск", так там можно было поставить параметр. А первая часть скрипта вызывается с панели ...

Бред какой-то. А что мешает все написать в одном скрипте, который будет вызываться либо из меню "Запуск", либо с панели? Параметр можно указать и там, и там.
Приведи код своих скриптов. Я помогу их переделать. Я бы и сейчас написал, только лень выдумывать алгоритм случайного выбора файла, да и твой критерий поиска по категориям я не знаю.
Back to top
View user's profile Send private message
KoS



Joined: 13 Jun 2006
Posts: 9
Location: Киев

Post (Separately) Posted: Wed Jun 14, 2006 15:32    Post subject: Reply with quote

буду дома, выложу скрипт.

А на счет все в одном скрипте, объясню. Сразу я тоже так хотел. Но если я запускаю основной скрипт с параметром, создается файл, который отвечает за выделенные файлы. Это значит, что когда я в скрипте выделяю файлы, твой код уже считает не те файлы, которые я сейчас скриптом выделил, а те, которые были выделены до запуска скрипта.
Это если я правильно понял. Потому что я еще дома немало повозился, пока нормально соединил твой и свой, с позволения сказать Smile, скрипты

С панели я вызываю основной скрипт, который выделяет нужные файлы, потом, чтобы создался тот темповский файл, в который входят имена выделенных файлов, нужно запустить твой скрипт отдельно. Хоткей и параметр на него можно наложить, если он в меню "запуск". Поэтому я разбил выполнение на два скрипта.
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Wed Jun 14, 2006 15:48    Post subject: Reply with quote

Вернёмся к обоям: тебе из большого числа обоев надо выбрать ровно одну? Почему именно скриптом, а не встроенным в тотал поиском?

Вообще, для случайности выбора можно попользоваться плагином misc.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Jun 14, 2006 15:49    Post subject: Reply with quote

Даю наводку - а зачем вообще выделять найденные скрипты, что если искать самим скриптом и применять случайный алгоритм к списку найденных файлов?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
KoS



Joined: 13 Jun 2006
Posts: 9
Location: Киев

Post (Separately) Posted: Wed Jun 14, 2006 20:19    Post subject: Reply with quote

funduk, не знаю, что за плагин misc, так как уже месяца три не обновлял свои плагины и не смотрел, что нового на сайте

Batya, я так, по-моему, и делаю

А вот и сами скрипты:
Code:

// KoS Скрипт первый
// Ставим wallpaper, который имеет рейтинг более трех включительно
// Файлы имеют вид: 4 Cat.jpg или 5 Abstract.bmp

//--------------------------------------------------------
//Открываем временно новую вкладку. Потом, в конце, мы ее закроем.
//Обои лежат в папке, которая вызывается из Favorites: ctrl+d f w

var xxx = WScript.CreateObject("WScript.Shell");

xxx.SendKeys("^{t}");
xxx.SendKeys("^{d}");
xxx.SendKeys("{f}");
xxx.SendKeys("{w}");
xxx.SendKeys("^{b}");
  WScript.Sleep(300);
 
// Устанавливаем фильтр по ctrl+F12
// Там условие следующее: [345] (.*).(jpg|bmp)
// В меню выбора он вызывается >345
xxx.SendKeys("^{F12}"); 
xxx.SendKeys(">");
xxx.SendKeys("345");
xxx.SendKeys("{ENTER}");

xxx.SendKeys("^{a}"); // Выделяем все файлы

xxx.SendKeys("^%{F1}"); // Запускаем другой скрипт, который висит в меню "Запуск" на ctrl+alt+F1


Второй скрипт:
Code:

/* ====================================Batya
   Подсчет количества выделенных файлов
   Параметры вызова из TC: %L
==================================== */
var objArgs, FSO, TextFile, p = 0;
objArgs = WScript.Arguments;
FSO = new ActiveXObject("Scripting.FileSystemObject");
TextFile = FSO.OpenTextFile(objArgs(0));
while (!TextFile.AtEndOfStream)
{
  p++;
  TextFile.SkipLine();
}
TextFile.Close();


//===============================================KoS

var xxx = WScript.CreateObject("WScript.Shell");


var r = Math.random()
for (var i = 1; i <= r * p; i++)
xxx.SendKeys("{DOWN}");

xxx.SendKeys("^%{F2}"); //пришлось установить команду "снять все выделение" на дополнительную комбинацию клавиш: ctrl+alt+F2, потому что в скрипте почему-то не работали ни ctrl+Num-, ни Num*
//Может, я их не правильно записывал, может для Num нужно что-то особенное

xxx.SendKeys("{F3}");
  WScript.Sleep(100);
xxx.SendKeys("+{e}"); // у меня на просмотр картинок стоит "sgviewer"
  WScript.Sleep(100);
xxx.SendKeys("{ESC}");
xxx.SendKeys("^{F10}");
xxx.SendKeys("^{w}"); // закрываем вкладку
WScript.Sleep(100);
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Wed Jun 14, 2006 20:23    Post subject: Reply with quote

А плагина misc на сайте нет. На форуме есть тема про неучтённые плагины.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Jun 15, 2006 13:35    Post subject: Reply with quote

KoS
Вот так, на мой взгляд, будет красивее:
Code:
var objArgs, FSO, MyPictures, PicturesRank, FileArray = new Array( ), r, Irfan, WshShell;
// ============= Задайте каталог картинок ===============
MyPictures = "c:\\MyPictures\\Collection";
// ============== Задайте путь IrfanView ================
Irfan = '"D:\\Program Files\\IrfanView\\i_view32.exe"'
// ======================================================

// === Минимальное желаемое качество картинок ===
objArgs = WScript.Arguments;
if (objArgs.length == 0)
  PicturesRank = 5;
else
  PicturesRank = objArgs(0);
 
FSO = new ActiveXObject("Scripting.FileSystemObject");
ToProcess(MyPictures);

r = Math.round(Math.random() * FileArray.length);
WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run(Irfan + " " + FileArray[r] + " /wall=2 /killmesoftly");

function ToProcess(FolderPath)
{
  var ParentFolder, FilesCollection, FoldersCollection, FileName, FileExt;
  ParentFolder      = FSO.GetFolder(FolderPath);
  FilesCollection   = new Enumerator(ParentFolder.files);
  FoldersCollection = new Enumerator(ParentFolder.SubFolders);

  // === Обработаем вложенные файлы ===
  for (; !FilesCollection.atEnd(); FilesCollection.moveNext())
  {
    FileName = FilesCollection.item().Name;
    FileExt  = FSO.GetExtensionName(FilesCollection.item()).toLowerCase( );
    // === Условие отбора картинок ===
    if ((FileName.substr(0, 1) >= PicturesRank) && ((FileExt == "jpg") || (FileExt == "bmp")))
    {
      FileArray = FileArray.concat(FilesCollection.item());
    }
  }
  // === Обработаем вложенные папки ===
  for (; !FoldersCollection.atEnd(); FoldersCollection.moveNext())
  {
    ToProcess(FoldersCollection.item());
  }
}

Установку обоев сделал через IrfanView - можно сделать через командную строку.
Скрипту в качестве параметра можно передать цифру - категорию картинки. Если не передано, по умолчанию - 5. Скрипт ищет картинки с категорией не меньше указанной. Если нужен другой алгоритм поиска, скрипт легко переделать.

Удачи!

P.S. Если где-то можно скрипт упростить, прошу не ругаться - на Java Script пишу мало.
Back to top
View user's profile Send private message
KoS



Joined: 13 Jun 2006
Posts: 9
Location: Киев

Post (Separately) Posted: Thu Jun 15, 2006 14:29    Post subject: Reply with quote

Я поражен красотой скрипта! Все работет. Проверял в разных ситуациях.
Хоть и не все мне понятно. Как сложный английский текст - многие слова понятны, некоторые конструкции ясны, общий смысл улавливаю, но конкретно пересказать не смогу. Smile

Спасибо. Реально намного более гибкий скрипт.

А на счет js.. Smile
Я пишу скрипты на том языке, для которого в мануале нашел описание на нужную функцию или вообще кусок аналогичного примера
Поэтому мне это не так принципиально Smile

Но за красивый скрипт - огромное спасибо! Получаешь огромное удовольствие, когда после неуклюжего монстра смотришь на токого элегантного джентельмена Wink
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Jun 15, 2006 15:24    Post subject: Reply with quote

Я доволен, что скрипт понравился Smile
Если что-то конкретно не понятно, спрашивай.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Fktrc



Joined: 26 Jan 2005
Posts: 13
Location: Кемерово

Post (Separately) Posted: Thu Jul 13, 2006 13:25    Post subject: Reply with quote

Volniy wrote:
Это далеко не новинка, видел и покруче (поищи по словам "wsh API Toolkit OCX")
А попробуй вот это: http://www.yandex.ru/yandsearch?rpt=rad&text=wsh+API+Toolkit+OCX&numdoc=0 Very Happy
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6 ... 25, 26, 27  Next
Page 5 of 27

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group