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 

Single Post  Topic: Windows Script Host 
Author Message
Batya



PostPosted: 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 пишу мало.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group