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 

Замена в именах знаков подчеркивания на их число

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Mon Apr 16, 2012 13:16    Post subject: Замена в именах знаков подчеркивания на их число Reply with quote

Здравствуйте
Столкнулся - с такой проблемой, имеется множество каталогов и файлов с именами вида
Code:
__
___
____
_____-INDEX.HTM
и т.д Подскажите как автоматизировать переименование так, что-бы каждый знак _ превращался в цифру, то есть
Code:
_ ->1
__ -> 2
и т.д Может есть схема с использованием регулярных выражений? или варианты только в ручную начиная с самых длинных прочерков. Заранее благодарен.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Apr 16, 2012 14:02    Post subject: Reply with quote

Название темы не соответствует задаче.
shveicar wrote:
каждый знак _ превращался в цифру, то есть
Неверно. Схема подразумевает не "каждый знак в цифру", а совпавшие символы в их кол-во.
Code:
'================================================
' Замена в именах выделенных папок/файлов
' первых одинаковых символов на их число
' Параметры: %WL <заменяемый символ>
'================================================
With WScript.Arguments
  If .Count = 0 Then WScript.Quit
  List = .Item(0) : Symbol = .Item(1)
End With
With CreateObject("Scripting.FileSystemObject")
  Set TF = .GetFile(List).OpenAsTextStream(1, -1)
  Do Until TF.AtEndOfStream
    F = TF.ReadLine
    If F > vbNullString Then
      FN = .GetFileName(F) : n = 1
      If InStr(FN, Symbol) = 1 Then
        Do While Symbol = Mid(FN, n, 1) : n = n + 1 : Loop
        If .FolderExists(F) Then .GetFolder(F).Name = n - 1 & Mid(FN, n) _
        Else .GetFile(F).Name = n - 1 & Mid(FN, n)
      End If
    End If
  Loop
End With


Last edited by Flasher on Mon Apr 16, 2012 14:34; edited 1 time in total
Back to top
View user's profile Send private message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Mon Apr 16, 2012 14:33    Post subject: Reply with quote

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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Apr 16, 2012 14:36    Post subject: Reply with quote

15 мин назад уже исправил. Кстати, процесс wscript.exe убить надо.
Back to top
View user's profile Send private message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Mon Apr 16, 2012 14:40    Post subject: Reply with quote

Спасибо, теперь все OK
Quote:
Кстати, процесс wscript.exe убить надо
У меня, после первого варианта - комп завис... пришлось делать резет.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Apr 16, 2012 15:01    Post subject: Reply with quote

shveicar wrote:
У меня, после первого варианта - комп завис..
На будущее: если скрипт с первой попытки ничего не делает или начинаются тормоза, то нужно быстренько открыть диспетчер (например, AceHelper) по хоткею, посмотреть нет ли там процессов Wscript.exe и воспользоваться кнопкой со скриптом для убийства всех процессов WScript. Если процесс один, то можно это делать сразу через диспетчер.

Название темы исправь.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Mon Apr 16, 2012 15:07    Post subject: Reply with quote

Название темы исправлено. Прежнее название "групповое переименование из кодировки DOS", действительно, не имело к делу никакого отношения.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon Apr 16, 2012 17:37    Post subject: Reply with quote

г.п.

Code:
Найти:    _____________|____________|___________|__________|_________|________|_______|______|_____|____|___|__|_

Заменить: 13|12|11|10|9|8|7|6|5|4|3|2|1
Back to top
View user's profile Send private message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Wed Apr 18, 2012 13:34    Post subject: Reply with quote

Tol!k
Это ваши рекомендации?
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Wed Apr 18, 2012 14:14    Post subject: Reply with quote

shveicar wrote:
Tol!k
Это ваши рекомендации?
Это готовое решение. Проверил. Работает.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2689

Post (Separately) Posted: Wed Apr 18, 2012 14:21    Post subject: Reply with quote

shveicar
г.п. = Меню Файлы > Групповое переименование (Ctrl+M)
Back to top
View user's profile Send private message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Wed Apr 18, 2012 15:24    Post subject: Reply with quote

Спасибо всем за помощь, действительно, можно и так.
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
Page 1 of 1

 
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