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
Petr_Ch



PostPosted: Sat Feb 02, 2013 17:54    Post subject: Reply with quote

Flasher

Все эти переносы как раз и нужны чтобы сосредоточиться на основной цели - обработке, файлов. По обработке у меня нет вопросов. Там как раз моё поле и я в теме.
Путём длительных наблюдений я подсчитал что обработка ускоряется процентов на 30, если файлы собраны в одну кучу.

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

Вот я и хочу автоматизировать самое слабое звено - ручное растаскивание файлов.

Код подправил, но выдает ошибку. Что-то в предпоследней строчке ему не нравится. Хотя, судя по всему, он и начальные команды не выполняет(((
Code:
'======================================================================
' Параметры:
' {файл-список}
'
' Пример параметров при вызове из TC:
' %L
'======================================================================
Option Explicit
Dim FSO, FF, F, SF

With WScript
  If .Arguments.Count = 0 Then
    MsgBox "Не заданы параметры!", vbOKOnly + vbCritical, "Очистка вложенных папок"
    .Quit
  End If
  FF = .Arguments(0)
End With

Set FSO = CreateObject("Scripting.FileSystemObject")

With FSO.OpenTextFile(FF, 1)
  Do While Not .AtEndOfStream
    F = Trim(.ReadLine)
    If F <> "" Then
      If FSO.FolderExists(F) Then
        For Each SF In FSO.GetFolder(F).SubFolders
          On Error Resume Next
          MoveFromFolder SF, F
          If Err.Number = 0 Then FSO.DeleteFolder SF.Path
          Err.Clear
          On Error GoTo 0
        Next
      End If
    End If
  Loop
  .Close
End With

Set FSO = Nothing
WScript.Quit

Sub MoveFromFolder(pSubFolder, pFolder)
  Dim lF
  For Each lF In pSubFolder.Files
    MoveFile lF, pFolder
  Next
  For Each lF In pSubFolder.SubFolders
    MoveFromFolder lF, pFolder
    FSO.DeleteFolder lF.Path
  Next
End Sub

Sub MoveFile(pFile, pFolder)
  Dim lF, lE
  lF = "C:\temp\" & FSO.GetParentFolderName(pFolder.Path) & "_" & pFile.Name
  lE = LCase(FSO.GetExtensionName(pFile.Path))
  If (lE = "jpg") Or (lE = "tif") FSO.MoveFile pFile.Path, lF
End Sub
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group