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: Добавление имя каталога к именам выделенных файлов? 
Author Message
Batya



PostPosted: Tue Nov 22, 2005 11:17    Post subject: Reply with quote

Quote:
А имена каталогов в Array можно менять?

Можно. Для этого и сделал массивом.

Quote:
Единственно, в этих 4-х папках (которые не троаются) файлы не должны переименовываться и во-вложенных каталогах. (Там они будут присутствовать).

Поправил:
Code:
'================================================================================
' Переименование файлов в указанном каталоге с заданной периодичностью
' К имени файла добавляется приставка - имя родительского каталога
' Поодерживается двойное вложение подкаталогов
'================================================================================

Dim Mydir, Mysleep, Delimiter, MyKey
'========== Изменяемые параметры ================================================
Mydir     = "E:\PAGE STORE\"  'Сканируемый каталог
Delimiter = "_"               'Разделитель после приставки
Mysleep   = 10000             'Пауза между сканированием в милисекундах
MyKey     = "HKCU\Environment\RunningMyScript" 'Ключ в реестре
NotInProc = Array("Temp", "HighRes", "LowRes", "Quest") 'Папки не обрабатываются
'================================================================================
Dim FSO, WshShell, MyFolder, MyFolder1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set MyFolder = FSO.GetFolder(Mydir)

Dim MykeyValue, MyDirName, ScanFile, ScanFileName, NameLen, MySubFolders
Dim Scan4Not, Pos4Not, Pos4Not1, SearchStr
MykeyValue = True
WshShell.RegWrite MyKey, MykeyValue

Do While MykeyValue
  MySubFolders = ""
  For Each ScanFolder in MyFolder.SubFolders
    MySubFolders = MySubFolders & chr(13) & FSO.GetFolder(ScanFolder).Path
    For Each ScanFolder1 in ScanFolder.SubFolders
      MySubFolders = MySubFolders & chr(13) & FSO.GetFolder(ScanFolder1).Path
    Next
  Next
  For Each Scan4Not in NotInProc
    SearchStr = chr(13) & Mydir & Scan4Not
    Pos4Not  = InStr(MySubFolders, SearchStr)
    Do While Pos4Not > 0
      Pos4Not1 = InStr(Pos4Not + 1, MySubFolders & chr(13), chr(13))
      MySubFolders = Mid(MySubFolders, 1, Pos4Not - 1) & Mid(MySubFolders, Pos4Not + Pos4Not1 - 1)
      Pos4Not  = InStr(MySubFolders, SearchStr)
    Loop
  Next
  MySubFolders = Split(Mid(MySubFolders, 2), chr(13))
  For Each ScanFolder in MySubFolders
    Set MyFolder1 = FSO.GetFolder(ScanFolder)
    MyDirName = MyFolder1.Name
    NameLen   = Len(MyDirName)
    For Each ScanFile in MyFolder1.Files
      ScanFileName = FSO.GetFile(ScanFile).Name
      If Left(ScanFileName, NameLen) <> MyDirName Then
        FSO.MoveFile ScanFile, MyFolder1.Path & "\" & MyDirName & Delimiter & ScanFileName
      End If
    Next
  Next
  MykeyValue = WshShell.RegRead(MyKey)
  Wscript.Sleep Mysleep
Loop
WshShell.RegDelete MyKey
Set FSO       = Nothing
Set WshShell  = Nothing
Set MyFolder  = Nothing
Set MyFolder1 = Nothing
WScript.Quit
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group