Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Перемещение файлов в односимвольные каталоги

Q: Помогите, пожалуйста, выделенные файлы раскидать по папкам с именем первого символа каждого файла.
Например: Имяфайла -> в папку И, другойфайл -> в папку Д (можно без учёта регистра). Если папки с именем какого-либо символа нет - создать её.
A: vbs-скрипт:
'============================================================= 
' Переместить выделенные файлы в создаваемые при необходимости 
' папки с именами первых символов имён файлов 

' ! Если выбран один файл, то участвуют все файлы источника 

' Параметры: %WL "<путь источника>" "<путь получателя>" 
' Пример: %WL "%P" "%T" 
'============================================================= 
Set FSO = CreateObject("Scripting.FilesystemObject")
With WScript.Arguments 
  If .Count = 0 Then WScript.Quit 
  L = .Item(0)
  P = FSO.BuildPath(.Item(1), "\") : T = FSO.BuildPath(.Item(2), "\")
End With 
TF = Split(FSO.GetFile(L).OpenAsTextStream(1, -1).ReadAll, vbNewLine) 
If Ubound(TF) = 1 Then 
  For Each F in FSO.GetFolder(P).Files : Move F : Next 
Else 
  For Each F in TF 
    If F <> "" Then : If FSO.FileExists(F) Then Move F : End If 
  Next 
End If 
Set FSO = Nothing : WScript.Quit 

Sub Move(Fl) 
  Trg = T & Left(FSO.GetBaseName(Fl), 1) 
  If Not FSO.FolderExists(Trg) Then FSO.CreateFolder Trg 
  FSO.MoveFile Fl, Trg & "\" 
End Sub

Flasher
15.11.2014