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

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

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

Сообщение cojoc »

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

Если папки с именем какого-либо символа нет - создать её.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Код: Выделить всё

'=============================================================
' Переместить выделенные файлы в создаваемые при необходимости
' папки с именами первых символов имён файлов

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

' Параметры: %WL "<путь источника>" "<путь получателя>"
' Пример: %WL "%P" "%T"
'=============================================================
With WScript.Arguments
  If .Count = 0 Then WScript.Quit
  L = .Item(0) : P = .Item(1) : T = .Item(2)
End With
If Right(P, 1) <> "\" Then P = P & "\"
If Right(T, 1) <> "\" Then T = T & "\"
Set FSO = CreateObject("Scripting.FilesystemObject")
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 Чт дек 01, 2011 11:20, всего редактировалось 3 раза.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

похожая тема
"Переупорядочить папки по первым буквам их имён"
http://forum.wincmd.ru/viewtopic.php?t=12895
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Привет Flasher!
Спасибо, сейчас проведу испытания :)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k писал(а):похожая тема
... Что-то я искать разучился...

cojoc, привет.
Одно условие дописал.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Flasher
У меня выскакивает ошибка в строке 18
invalid procedure call or argument
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Переменную не поправил. Сделано.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Tol!k
Спасибо за наводку, посмотрел - там вроде бы нет решения для файлов и папок с первым символом.

Добавлено спустя 6 минут:

Flasher
Сработал быстро и без ошибок! Спасибо Flasher!
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А зачем скрипты? Стандартного MRT уже мало?

Ctrl+M, маска имени [N1]\[N] :D

PS. Нужен TC 8.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Получатель может быть разным. И тут в один клик, да и без выделения можно.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Flasher
Есть один нюанс срипт не обрабатывает нужным образом файлы с символами:
ßéêŽÀ и так далее...
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

cojoc, если у тебя 8-й тотал, пробуй мой вариант через мультипереименователь.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

cojoc
Вместо %L укажи %UL.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Flasher, MVV ОК

Добавлено спустя 7 минут:

Flasher
что-то не подействовало %UL
MVV
через мультипереименователь получилось
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

cojoc
Пофиксил скрипт.
Хотя не представляю, зачем держать файлы с диакритическими знаками в их именах (за исключением кириллицы (й, ё), конечно). Это фактически всех скриптов по работе со списками касается...
Ответить