Страница 1 из 1

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

Добавлено: Пн апр 16, 2012 13:16
shveicar
Здравствуйте
Столкнулся - с такой проблемой, имеется множество каталогов и файлов с именами вида

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

__
___
____
_____-INDEX.HTM
и т.д Подскажите как автоматизировать переименование так, что-бы каждый знак _ превращался в цифру, то есть

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

_ ->1
__ -> 2 
и т.д Может есть схема с использованием регулярных выражений? или варианты только в ручную начиная с самых длинных прочерков. Заранее благодарен.

Добавлено: Пн апр 16, 2012 14:02
Flasher
Название темы не соответствует задаче.
shveicar писал(а):каждый знак _ превращался в цифру, то есть
Неверно. Схема подразумевает не "каждый знак в цифру", а совпавшие символы в их кол-во.

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

'================================================
' Замена в именах выделенных папок/файлов
' первых одинаковых символов на их число
' Параметры: %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

Добавлено: Пн апр 16, 2012 14:33
shveicar
Спасибо Flasher
Но что-то не работает, проверил на файлах и на каталогах
безрезультатно, выделяю группу, применяю скрипт - ничего не происходит..

Добавлено: Пн апр 16, 2012 14:36
Flasher
15 мин назад уже исправил. Кстати, процесс wscript.exe убить надо.

Добавлено: Пн апр 16, 2012 14:40
shveicar
Спасибо, теперь все OK
Кстати, процесс wscript.exe убить надо
У меня, после первого варианта - комп завис... пришлось делать резет.

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

Название темы исправь.

Добавлено: Пн апр 16, 2012 15:07
Avada
Название темы исправлено. Прежнее название "групповое переименование из кодировки DOS", действительно, не имело к делу никакого отношения.

Добавлено: Пн апр 16, 2012 17:37
Tol!k
г.п.

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

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

Заменить: 13|12|11|10|9|8|7|6|5|4|3|2|1

Добавлено: Ср апр 18, 2012 13:34
shveicar
Tol!k
Это ваши рекомендации?

Добавлено: Ср апр 18, 2012 14:14
Serge Yolkin
shveicar писал(а):Tol!k
Это ваши рекомендации?
Это готовое решение. Проверил. Работает.

Добавлено: Ср апр 18, 2012 14:21
sa
shveicar
г.п. = Меню Файлы > Групповое переименование (Ctrl+M)

Добавлено: Ср апр 18, 2012 15:24
shveicar
Спасибо всем за помощь, действительно, можно и так.