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 

Групповое переименование
Goto page 1, 2, 3 ... 49, 50, 51  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Rustem



Joined: 07 Oct 2009
Posts: 18
Location: Башкортостан

Post (Separately) Posted: Thu Oct 15, 2009 08:23    Post subject: Групповое переименование Reply with quote

Есть куча файлов вида "печать_xxxx.*" или "распечатано_XXXX.*" . Как в одной кнопке реализовать переименование :
1) если выбраны файлы вида "печать_xxxx.*" , то переименовываем в вид "распечатано_XXXX.*" ?
2) если выбраны файлы вида "распечатано_xxxx.*" , то переименовываем в вид "XXXX.*" ?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Oct 15, 2009 10:16    Post subject: Reply with quote

Rustem
vbs-скрипт подойдет или нужно, чтобы всё было обязательно прописано только в кнопке?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Thu Oct 15, 2009 12:16    Post subject: Reply with quote

Что касается "если выбрано", то только скриптом. Либо две кнопки, где пользователь сам решает, какую из них давить. А если кнопка одна (вопрос "если" снят), то:
    1. Делаем шаблон группового переименования. Называем его "абв";
    2. Делаем на панели кнопку MULTIRENAME абв;
    3. Давим на кнопку. Потом остается только нажать Start (то есть, строго говоря, 2 кнопки).

_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Rustem



Joined: 07 Oct 2009
Posts: 18
Location: Башкортостан

Post (Separately) Posted: Thu Oct 15, 2009 13:05    Post subject: Reply with quote

Мне в принципе не важно , скрипт это будет или нет . Главное чтобы была ОДНА кнопка , и чтобы это работало Smile .
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Thu Oct 15, 2009 13:40    Post subject: Reply with quote

Если:
1. Batya ничего не напишет на vbs (такое тоже возможно; не вечно же ему всем помогать); и
2. Тебя устроит скрипт на PowerPro

то я возьмусь. Я уже алгоритм в голове нарисовал Smile
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Rustem



Joined: 07 Oct 2009
Posts: 18
Location: Башкортостан

Post (Separately) Posted: Thu Oct 15, 2009 13:59    Post subject: Reply with quote

А может чтобы не помечать файлы сделать так :
Задаём Фильтр ( печать*.* , распечатано*.* ) , затем Ctrl+B, и среди отображаемых файлов проводим операцию переименования . Такое возможно ?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Thu Oct 15, 2009 14:13    Post subject: Reply with quote

Это явно НЕ одна кнопка.

Я бы еще предложил сделать шаблон поиска. Выполняем LOADSEARCH, потом на панель и MULTIRENAME. Но опять же - НЕ ОДНА...

Ты бы сам сперва решил, что именно тебе нужно.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Rustem



Joined: 07 Oct 2009
Posts: 18
Location: Башкортостан

Post (Separately) Posted: Thu Oct 15, 2009 16:09    Post subject: Reply with quote

Я просто плохо разбираюсь в скриптах . Поэтому и хотел узнать можно ли в скрипте прописать такую последовательность действий и повесить на кнопку. Значит решено : всё остаётся по-прежнему - одна кнопка...
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Thu Oct 15, 2009 16:30    Post subject: Reply with quote

В скрипте можно прописать все! В пределах разумного. Wink

В твоем исходном посте ххх отличаются регистром от ХХХ - это случайно? Если нет, распиши этот вопрос подробнее.

Ждем реакцию Бати.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Oct 15, 2009 17:22    Post subject: Reply with quote

vbs-реакция Smile
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
View user's profile Send private message
Rustem



Joined: 07 Oct 2009
Posts: 18
Location: Башкортостан

Post (Separately) Posted: Fri Oct 16, 2009 08:46    Post subject: Reply with quote

Вахмурка : На счет регистра (XXXX и xxxx ) - это случайность . Это не критично.
Batya : спасибо за оперативное реагирование - всё работает !
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 16, 2009 12:48    Post subject: Reply with quote

Rustem wrote:
А может чтобы не помечать файлы ...

Скрипт выше изменён. Теперь в качестве параметра можно указать папку, в которой следует обрабатывать файлы. Будут обработаны все файлы, в том числе во всех вложенных папках.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Itar-Tass



Joined: 18 Jan 2009
Posts: 48

Post (Separately) Posted: Sat Jan 02, 2010 06:42    Post subject: Reply with quote

Как сделать так что бы только ПЕРВАЯ буква меняла регистр
при групповом переименовании а остальных операция не касалась.

Пример
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
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sat Jan 02, 2010 13:41    Post subject: Reply with quote

Quote:
Как ограничить изменение регистра только первой буквой?

Code:
[U][N1][n][N2-]
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Sun Jan 31, 2010 20:08    Post subject: Reply with quote

Volniy
ценный совет с ключами [U], [n].
А какие еще есть? Скажите секцию в справке.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3 ... 49, 50, 51  Next
Page 1 of 51

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group