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
Serge Yolkin



PostPosted: Sun Dec 04, 2011 13:08    Post subject: Reply with quote

keiran_green
Не навязываю свое вИдение, отформатил скрипт для собственного удобства (чтобы прочитать):
Code:
var
 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
 autorun_exist,
 AutorunName,
 d,
 f,
 fFldr,
 fFldrLnk,
 FldrCnt=0,
 fso=new ActiveXObject('Scripting.FileSystemObject'),
 intButton=-1,
 LnkCount=0,
 s='',
 script,
 sFiles,
 text,
 WshShell=WScript.CreateObject('WScript.Shell');
//если был передан аргумент проверки autorun...
if(WScript.Arguments.Named.exists('autorun'))autorun_check=1;
if(autorun_check==1){
  d=new Date();
  autorun_exist=false;
  AutorunName='\autorun_'+d.getDay()+'.'+d.getMonth()+'.'+d.getYear()+
   '#'+d.getHours()+'.'+d.getMinutes()+'.'+d.getSeconds()+'.inf';
}
if(WScript.Arguments.UnNamed.length==0){
  script=fso.GetFile(WScript.ScriptFullName);
  f=fso.GetFolder(script.ParentFolder);
  fFldrLnk=script.ParentFolder+'\\!ярлыки\\';
  text='Данный скрипт отображает скрытые папки+перемещает\nвсе найденные ярлыки в папку «'+
   fFldrLnk+'»\nИспользование:\n\tскопировать скрипт в корень флешки, запустить\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()){
    var ext=fso.GetExtensionName(sFiles.item().Name);
    if(ext.toLowerCase()=='lnk'){
      if(fso.FolderExists(fFldrLnk)==false)fso.CreateFolder(fFldrLnk)
      fso.MoveFile(sFiles.item().Name,fFldrLnk);
      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'+
   '\tскрытых папок: '+FldrCnt+'\n'+
   '\tярлыков: '+LnkCount;
  if((autorun_check==1)&&(autorun_exist)){
    s=s+'\n\nОбнаружен и перемещен autorun.inf файл.';
  }
  WshShell.Popup(s, -1, 'Готово', 64);
}
Из теории: чтобы объявить локальную переменную, используется var, иначе переменная глобальная. Чтобы не писать это "var" перед каждой строчкой присвоения, можно после одного var перечислить все переменные (с присвоением или без) через запятую, точка с запятой заканчивает перечисление.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group