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: Скрипт для очистки flash от: "все папки стали ярлыками". 
Author Message
keiran_green



PostPosted: Fri Dec 02, 2011 13:52    Post subject: Скрипт для очистки flash от: "все папки стали ярлыками". Reply with quote

Cкрипт отображает скрытые папки на флешке и перемещает найденные ярлыки в отдельную папку.
Код скрипта:
Code:
/*
################################################################################

Удаление файлов lnk и восстановление скрытых папок.

последнее изменение 08.12.2011

отображает скрытые папки и перемещает файлы *.lnk в отдельную папку
Использование: скопировать файл в папку или в корень флешки и запустить
PS: проверяет только текущую папку
PPS: для проверки и пермешения файла autorun.inf
     в строке
       autorun_check = 0;
     заменить на
       autorun_check = 1;

################################################################################

Для создания кнопки в Total Commander перетащить файл скрипта на панель TC,
в свойствах появившейся кнопки, в поле "параметры" указать '%P%N' (без кавычек)
Использование в ТС: выбрать любой файл/папку в панели и нажать на кнопку.

Для проверки autorun'a дописать в конец строки параметров '/autorun'  т.е.
получиться должно так:
  '%P%N /autorun'
################################################################################
*/

var
fso = new ActiveXObject("Scripting.FileSystemObject"),
WshShell = WScript.CreateObject("WScript.Shell"),
attr = new Array (17,18,19,20,21,22,23,24,25,26,48,49,50,51,55,56,57,58,null),

autorun_check = 0, //1 - будет проверять наличие файл autorun.inf

s = "",

FldrCnt = 0,
LnkCount = 0,
intButton = -1,
d = new Date(),
DateTime = d.getDay() +"."+ d.getMonth()+"."+d.getYear()
              +"#"+d.getHours()+"."+d.getMinutes()+"."+d.getSeconds();

//если был передан аргумент проверки autorun...
if (WScript.Arguments.Named.exists("autorun"))
{
autorun_check = 1;
}

if (autorun_check == 1)
{
autorun_exist = false;
AutorunName = "\autorun_" + DateTime +".inf";
}

if (WScript.Arguments.UnNamed.length == 0)
  {
  script = fso.GetFile(WScript.ScriptFullName);
  f = fso.GetFolder(script.ParentFolder);
  fFldrLnk = script.ParentFolder + "\\!ярлыки\\";

  text = "Данный скрипт отображает скрытые папки + перемещает\nвсе найденные ярлыки в " +
  "папку \"" +fFldrLnk+DateTime+"\\\"\n\nИспользование:\nскопировать скрипт в корень флешки, запустить\nи согласиться на " +
  "лечение.\n\nЗапустить лечение в папке \"" + script.ParentFolder + "\" ?"

  intButton = WshShell.Popup (text, -1, "Устранение последствий вирусов", 4)
  }

if ((WScript.Arguments.UnNamed.length != 0) && (intButton != 6))
  {
    f = fso.GetFolder(fso.GetParentFolderName(WScript.Arguments(0)));
    fFldrLnk = f + "\\!ярлыки\\";
  }

if ((intButton == 6) || (WScript.Arguments.UnNamed.length != 0))
{
  sFiles = new Enumerator(f.Files )
  for (; !sFiles.atEnd(); sFiles.moveNext())
    {
    ext = fso.GetExtensionName(sFiles.item().Name);
      if ((ext == "lnk") ||(ext == "LNK")
        ||(ext == "Lnk") ||(ext == "LNk")
        ||(ext == "LNK") ||(ext == "lNK")
        ||(ext == "lnK") ||(ext == "LnK")
        ||(ext == "lNk"))
      {

      if (fso.FolderExists(fFldrLnk) == false)
        {
          fso.CreateFolder(fFldrLnk)
        }

      if (fso.FolderExists(fFldrLnk +DateTime+"\\") == false)
        {
          fso.CreateFolder(fFldrLnk +DateTime+"\\")
        }

        s = sFiles.item().Name
        fso.MoveFile(sFiles.item().Name , fFldrLnk + DateTime+"\\")
        LnkCount++;
        sFiles = new Enumerator(f.Files);
      }
      if (autorun_check == 1)
      {
        if (sFiles.item().Name == "autorun.inf")
          {

            if (fso.FolderExists(fFldrLnk) == false)
              {
               fso.CreateFolder(fFldrLnk)
              }

            sFiles.item().Attributes = 0;
            fso.MoveFile(sFiles.item().Name , fFldrLnk + AutorunName )
            autorun_exist = true;
            sFiles = new Enumerator(f.Files);
          }
      }
    }

fFldr = new Enumerator(f.SubFolders);
  for (; !fFldr.atEnd(); fFldr.moveNext())
    {
     for (i = 0; attr[i] != null; i++)
      {
        if (fFldr.item().Attributes == attr[i])
          {
            fFldr.item().Attributes = 0;
            FldrCnt++;
            break;
          }
      }
    }
  s = "Oбработано:\n" +
    "   скрытых папок: " + FldrCnt +"\n"+
    "   ярлыков: "  + LnkCount ;

  if ((autorun_check == 1) && (autorun_exist))
  {
    s = s + "\n\nОбнаружен и перемещен autorun.inf файл.";
  }
  WshShell.Popup(s, -1, "Готово", 64)
}
    Действие скрипта:
  • Скрипт проверяет текущую папку на наличие скрытых папок и ярлыков;
  • Атрибут "скрытый" у папок убирается;
  • Все найденные ярлыки перемещаются в папку "!ярлыки";
  • Файл "autorun.inf" переименовывается* (добавляется дата в имя файла) и тоже перемещается в папку "!ярлыки";
    * - если проверка autorun файла включена


Last edited by keiran_green on Thu Dec 08, 2011 02:56; edited 5 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group