View previous topic :: View next topic |
Author |
Message |
Rustem
Joined: 07 Oct 2009 Posts: 18 Location: Башкортостан
|
(Separately) Posted: Thu Oct 15, 2009 08:23 Post subject: Групповое переименование |
|
|
Есть куча файлов вида "печать_xxxx.*" или "распечатано_XXXX.*" . Как в одной кнопке реализовать переименование :
1) если выбраны файлы вида "печать_xxxx.*" , то переименовываем в вид "распечатано_XXXX.*" ?
2) если выбраны файлы вида "распечатано_xxxx.*" , то переименовываем в вид "XXXX.*" ? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2219 Location: Москва, Россия
|
(Separately) Posted: Thu Oct 15, 2009 10:16 Post subject: |
|
|
Rustem
vbs-скрипт подойдет или нужно, чтобы всё было обязательно прописано только в кнопке? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Thu Oct 15, 2009 12:16 Post subject: |
|
|
Что касается "если выбрано", то только скриптом. Либо две кнопки, где пользователь сам решает, какую из них давить. А если кнопка одна (вопрос "если" снят), то:
1. Делаем шаблон группового переименования. Называем его "абв";
2. Делаем на панели кнопку MULTIRENAME абв;
3. Давим на кнопку. Потом остается только нажать Start (то есть, строго говоря, 2 кнопки). _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Rustem
Joined: 07 Oct 2009 Posts: 18 Location: Башкортостан
|
(Separately) Posted: Thu Oct 15, 2009 13:05 Post subject: |
|
|
Мне в принципе не важно , скрипт это будет или нет . Главное чтобы была ОДНА кнопка , и чтобы это работало . |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Thu Oct 15, 2009 13:40 Post subject: |
|
|
Если:
1. Batya ничего не напишет на vbs (такое тоже возможно; не вечно же ему всем помогать); и
2. Тебя устроит скрипт на PowerPro
то я возьмусь. Я уже алгоритм в голове нарисовал _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Rustem
Joined: 07 Oct 2009 Posts: 18 Location: Башкортостан
|
(Separately) Posted: Thu Oct 15, 2009 13:59 Post subject: |
|
|
А может чтобы не помечать файлы сделать так :
Задаём Фильтр ( печать*.* , распечатано*.* ) , затем Ctrl+B, и среди отображаемых файлов проводим операцию переименования . Такое возможно ? |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Thu Oct 15, 2009 14:13 Post subject: |
|
|
Это явно НЕ одна кнопка.
Я бы еще предложил сделать шаблон поиска. Выполняем LOADSEARCH, потом на панель и MULTIRENAME. Но опять же - НЕ ОДНА...
Ты бы сам сперва решил, что именно тебе нужно. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Rustem
Joined: 07 Oct 2009 Posts: 18 Location: Башкортостан
|
(Separately) Posted: Thu Oct 15, 2009 16:09 Post subject: |
|
|
Я просто плохо разбираюсь в скриптах . Поэтому и хотел узнать можно ли в скрипте прописать такую последовательность действий и повесить на кнопку. Значит решено : всё остаётся по-прежнему - одна кнопка... |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Thu Oct 15, 2009 16:30 Post subject: |
|
|
В скрипте можно прописать все! В пределах разумного.
В твоем исходном посте ххх отличаются регистром от ХХХ - это случайно? Если нет, распиши этот вопрос подробнее.
Ждем реакцию Бати. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2219 Location: Москва, Россия
|
(Separately) Posted: Thu Oct 15, 2009 17:22 Post subject: |
|
|
vbs-реакция
Code: | '=========================================================================
' Переименование файлов, представленных в файле-списке или в папке:
' если имя начинается на {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 |
_________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Fri Oct 16, 2009 14:11; edited 7 times in total |
|
Back to top |
|
|
Rustem
Joined: 07 Oct 2009 Posts: 18 Location: Башкортостан
|
(Separately) Posted: Fri Oct 16, 2009 08:46 Post subject: |
|
|
Вахмурка : На счет регистра (XXXX и xxxx ) - это случайность . Это не критично.
Batya : спасибо за оперативное реагирование - всё работает ! |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2219 Location: Москва, Россия
|
(Separately) Posted: Fri Oct 16, 2009 12:48 Post subject: |
|
|
Rustem wrote: | А может чтобы не помечать файлы ... |
Скрипт выше изменён. Теперь в качестве параметра можно указать папку, в которой следует обрабатывать файлы. Будут обработаны все файлы, в том числе во всех вложенных папках. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Itar-Tass
Joined: 18 Jan 2009 Posts: 48
|
(Separately) Posted: Sat Jan 02, 2010 06:42 Post subject: |
|
|
Как сделать так что бы только ПЕРВАЯ буква меняла регистр
при групповом переименовании а остальных операция не касалась.
Пример
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]
Это не то.Потом опять нужно править.
Как ограничить изменение регистра только первой буквой? |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sat Jan 02, 2010 13:41 Post subject: |
|
|
Quote: | Как ограничить изменение регистра только первой буквой? |
|
|
Back to top |
|
|
_Johm
Joined: 14 May 2006 Posts: 119
|
(Separately) Posted: Sun Jan 31, 2010 20:08 Post subject: |
|
|
Volniy
ценный совет с ключами [U], [n].
А какие еще есть? Скажите секцию в справке. |
|
Back to top |
|
|
|