Групповое переименование
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Групповое переименование
Есть куча файлов вида "печать_xxxx.*" или "распечатано_XXXX.*" . Как в одной кнопке реализовать переименование :
1) если выбраны файлы вида "печать_xxxx.*" , то переименовываем в вид "распечатано_XXXX.*" ?
2) если выбраны файлы вида "распечатано_xxxx.*" , то переименовываем в вид "XXXX.*" ?
1) если выбраны файлы вида "печать_xxxx.*" , то переименовываем в вид "распечатано_XXXX.*" ?
2) если выбраны файлы вида "распечатано_xxxx.*" , то переименовываем в вид "XXXX.*" ?
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Что касается "если выбрано", то только скриптом. Либо две кнопки, где пользователь сам решает, какую из них давить. А если кнопка одна (вопрос "если" снят), то:
- 1. Делаем шаблон группового переименования. Называем его "абв";
2. Делаем на панели кнопку MULTIRENAME абв;
3. Давим на кнопку. Потом остается только нажать Start (то есть, строго говоря, 2 кнопки).
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Если:
1. Batya ничего не напишет на vbs (такое тоже возможно; не вечно же ему всем помогать); и
2. Тебя устроит скрипт на PowerPro
то я возьмусь. Я уже алгоритм в голове нарисовал
1. Batya ничего не напишет на vbs (такое тоже возможно; не вечно же ему всем помогать); и
2. Тебя устроит скрипт на PowerPro
то я возьмусь. Я уже алгоритм в голове нарисовал
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Это явно НЕ одна кнопка.
Я бы еще предложил сделать шаблон поиска. Выполняем LOADSEARCH, потом на панель и MULTIRENAME. Но опять же - НЕ ОДНА...
Ты бы сам сперва решил, что именно тебе нужно.
Я бы еще предложил сделать шаблон поиска. Выполняем LOADSEARCH, потом на панель и MULTIRENAME. Но опять же - НЕ ОДНА...
Ты бы сам сперва решил, что именно тебе нужно.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
В скрипте можно прописать все! В пределах разумного. 
В твоем исходном посте ххх отличаются регистром от ХХХ - это случайно? Если нет, распиши этот вопрос подробнее.
Ждем реакцию Бати.
В твоем исходном посте ххх отличаются регистром от ХХХ - это случайно? Если нет, распиши этот вопрос подробнее.
Ждем реакцию Бати.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
vbs-реакция
Код: Выделить всё
'=========================================================================
' Переименование файлов, представленных в файле-списке или в папке:
' если имя начинается на {Word1}, то {Word1} заменяется на {Word2};
' если имя начинается на {Word2}, то {Word2} удаляется из имени.
'
' Параметры:
' {файл-список}|{папка}
'
' Примеры параметров при вызове из TC:
' %L
' "%P"
'
' Автор - Batya
'=========================================================================
Option Explicit
'======== Изменяемые параметры ===========================================
Const Word1 = "печать_" 'Первое начало имен файлов
Const Word2 = "распечатано_" 'Второе начало имен файлов
'=========================================================================
Dim Mess, FSO, WSH, FF, IsFolder, F, LW1, LW2
On Error Resume Next
Main:CheckErr
On Error GoTo 0
MessBox Mess(3), 3
Quit 0
'Основная процедура
Sub Main
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
F = ""
CheckParam
LW1 = Len(Word1)
LW2 = Len(Word2)
If IsFolder Then
FolderProc FF
Else
For Each F In Split(FSO.OpenTextFile(FF).ReadAll, vbNewLine)
If F <> "" Then
F = GetPath(F)
If FSO.FileExists(F) Then
FileProc F
ElseIf FSO.FolderExists(F) Then
FolderProc F
End If
End If
Next
End If
End Sub
'Массив сообщений
Sub SetMess
Set Mess = CreateObject("Scripting.Dictionary")
With Mess
.Add 0, "Переименование по маске"
.Add 1, "Не указаны параметры!"
.Add 2, "Первый параметр не является файлом-списком или папкой!"
.Add 3, "Операция завершена."
End With
End Sub
'Проверка входных параметров
Sub CheckParam
If WScript.Arguments.Count = 0 Then Err.Raise vbObjectError + 1, "", Mess(1)
FF = GetPath(WScript.Arguments(0))
If Not FSO.FileExists(FF) Then
If Not FSO.FolderExists(FF) Then
Err.Raise vbObjectError + 2, "", Mess(2)
Else
IsFolder = True
End If
Else
IsFolder = False
End If
End Sub
'Обработка файла
Sub FileProc(pPath)
Dim lFName, lNewPath
lFName = FSO.GetFileName(pPath)
If Left(LCase(lFName), LW1) = LCase(Word1) Then
lNewPath = FSO.GetParentFolderName(pPath) & "\" & Word2 & Mid(lFName, LW1 + 1)
FileMove pPath, lNewPath
ElseIf Left(LCase(lFName), LW2) = LCase(Word2) Then
lNewPath = FSO.GetParentFolderName(pPath) & "\" & Mid(lFName, LW2 + 1)
FileMove pPath, lNewPath
End If
End Sub
'Перемещение файла
Sub FileMove(pPath, pNewPath)
FSO.MoveFile pPath, pNewPath
End Sub
'Обработка папки
Sub FolderProc(pPath)
Dim loF
Set loF = FSO.GetFolder(pPath)
For Each F In loF.SubFolders
F = F.Path
FolderProc F
Next
For Each F In loF.Files
F = F.Path
FileProc F
Next
Set loF = Nothing
End Sub
'Разложить путь при наличии переменных окружения
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function
'Проверка, нет ли ошибок
Sub CheckErr
Dim lMess
lMess = "Возникла ошибка № " & Err.Number & ":" & vbNewLine & Err.Description
If F <> "" Then lMess = lMess & vbNewLine & vbNewLine & "Файл\папка:" & vbNewLine & F
If Err.Number <> 0 Then
MessBox lMess, 1
Quit Err.Number
End If
End Sub
'Сообщение
Function MessBox(pMess, pMode)
Dim lIcon
Select Case pMode
Case 1 lIcon = vbCritical + vbOKOnly
Case 2 lIcon = vbExclamation + vbOKOnly
Case 3 lIcon = vbInformation + vbOKOnly
End Select
MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function
'Выход
Sub Quit(pExitCode)
Set Mess = Nothing
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit pExitCode
End Sub
Последний раз редактировалось Batya Пт окт 16, 2009 14:11, всего редактировалось 7 раз.
Нет, я не сплю. Я просто медленно моргаю.
Как сделать так что бы только ПЕРВАЯ буква меняла регистр
при групповом переименовании а остальных операция не касалась.
Пример
a.D._Police[01_of_12]_[ru_jp]_[Animereactor_ru]
надо получить
A.D._Police[01_of_12]_[ru_jp]_[Animereactor_ru]
Если просто выбирать 1 заглавную
то превращается в
A.d._police[01_of_12]_[ru_jp]_[animereactor_ru]
Если все слова с заглавной то
A.D._Police[01_Of_12]_[Ru_Jp]_[Animereactor_Ru]
Это не то.Потом опять нужно править.
Как ограничить изменение регистра только первой буквой?
при групповом переименовании а остальных операция не касалась.
Пример
a.D._Police[01_of_12]_[ru_jp]_[Animereactor_ru]
надо получить
A.D._Police[01_of_12]_[ru_jp]_[Animereactor_ru]
Если просто выбирать 1 заглавную
то превращается в
A.d._police[01_of_12]_[ru_jp]_[animereactor_ru]
Если все слова с заглавной то
A.D._Police[01_Of_12]_[Ru_Jp]_[Animereactor_Ru]
Это не то.Потом опять нужно править.
Как ограничить изменение регистра только первой буквой?
Как ограничить изменение регистра только первой буквой?
Код: Выделить всё
[U][N1][n][N2-]