Страница 1 из 1
Замена в именах знаков подчеркивания на их число
Добавлено: Пн апр 16, 2012 13:16
shveicar
Здравствуйте
Столкнулся - с такой проблемой, имеется множество каталогов и файлов с именами вида
и т.д Подскажите как автоматизировать переименование так, что-бы каждый знак _ превращался в цифру, то есть
и т.д Может есть схема с использованием регулярных выражений? или варианты только в ручную начиная с самых длинных прочерков. Заранее благодарен.
Добавлено: Пн апр 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
Спасибо всем за помощь, действительно, можно и так.