Групповое переименование
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Можно выбрать файлы по фильтру *.decrypted01.*, затем переименовать их в инструменте группового переименования с одновременным переносом в подпапку TEMP, для чего указать в поле “Маска для: имени файла” TEMP\[N], в поле “Найти:” .decrypted01, в поле “Заменить на:” <Пусто>. И наконец, переместить их обратно, заменив существующие.
P.S.
Пардон, я со своим ответом ошибся форумом. Это ж не "Общие вопросы"!
P.S.
Пардон, я со своим ответом ошибся форумом. Это ж не "Общие вопросы"!
Koter >>
Код: Выделить всё
'=============================================================================
' Замена в именах выделенных элементов списка в активном каталоге ТС
' с удалением имеющихся элементов с аналогичными присвоенными именами
' Условие: путь запуска - пустой
' Параметры:
' 1) %WL
' 2) "<искомая строка>" (если нет, ввод в окне)
' 3) "<новая строка>" (если нет, ввод в окне - * в качестве пустой строки)
'=============================================================================
With WScript.Arguments
C = .Count : If C = 0 Then WScript.Quit
List = .Item(0)
If C > 1 Then Find = .Item(1) Else Chek Find, "заменяемый"
If C > 2 Then Repl = .Item(2) Else Chek Repl, "новый"
End With : Dir = CreateObject("WScript.Shell").CurrentDirectory & "\"
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
For Each F in Split(.GetFile(List).OpenAsTextStream(1, -1).ReadAll, vbNewLine)
If F <> "" Then
If .FolderExists(F) Then
Set FF = .GetFolder(F)
If Find <> "" And InStr(FF.Name, Find) Then
NewName = Replace(FF.Name, Find, Repl) : NewF = Dir & NewName
If .FolderExists(NewF) Then .DeleteFolder NewF
End If
ElseIf .FileExists(F) Then
BN = .GetBaseName(F)
If Find <> "" And InStr(BN, Find) Then
Set FF = .GetFile(F)
NewName = Replace(BN, Find, Repl) & "." & .GetExtensionName(F)
NewF = Dir & NewName : If .FileExists(NewF) Then .DeleteFile NewF
End If
End If : FF.Name = NewName
End If
Next : Set FF = Nothing
End With : CreateObject("WScript.Shell").SendKeys "^R"
Sub Chek(Text, Word)
Text = InputBox(String(5, vbnewline) & "Введите " & Word & " текст:", Space(10) & _
"Замена имён выделенных файлов и папок", 3) : If Len(Text) = 0 Then WScript.Quit
If Trim(Text) = "*" Then Text = ""
End SubАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
то sa
Ну, так можно было бы, но надо же пути сохранить... Это же простой пример. А их там 79тыс. файлов.... и это только на одном из логических дисков в разных каталогах и подкаталогах.
Это у меня произошло после попадания вируса, закодировались все файлы с расширением rar, doc,docx,xml,xls,xlsx,dbf..... и прочие несущие личною и прочую информацию файлы фото, музыка, текст, базы, отчетность бух...
Спасибо ДрВебовцам, помогли с лекарством, И СПАСИБО - ГУРУ! Flasher -у!
Ну, так можно было бы, но надо же пути сохранить... Это же простой пример. А их там 79тыс. файлов.... и это только на одном из логических дисков в разных каталогах и подкаталогах.
Это у меня произошло после попадания вируса, закодировались все файлы с расширением rar, doc,docx,xml,xls,xlsx,dbf..... и прочие несущие личною и прочую информацию файлы фото, музыка, текст, базы, отчетность бух...
Спасибо ДрВебовцам, помогли с лекарством, И СПАСИБО - ГУРУ! Flasher -у!
Если папок много, то перед запуском группового переименования стоит нажать Ctrl+B (или Ctrl+Shift+B). Чтобы не возиться с папками TEMP, можно добавить к переименовываемым файлам (выбранным по *.decrypted01.*) новое расширение, скажем YYYY, то есть в поле имя оставить [N], в поле расширения ввести [E].YYYY, в поле “Найти:” .decrypted01, в поле “Заменить на:” <Пусто>. Затем поиском найти все файлы *.YYYY, вывести их на панель и по Shift+F6 переименовать в *, заменив существующие.
Koter
Чтобы мой скрипт работал с результатами поиска или режимом без подкаталогов, мне в нём нужно внести лёгкую правку. Умысел работать только в активном каталоге заключался в возможности отслеживания изменений в нём, чтобы не промахнуться с выбором нужных файлов. Если это не особо нужно, то легко исправлю.
Чтобы мой скрипт работал с результатами поиска или режимом без подкаталогов, мне в нём нужно внести лёгкую правку. Умысел работать только в активном каталоге заключался в возможности отслеживания изменений в нём, чтобы не промахнуться с выбором нужных файлов. Если это не особо нужно, то легко исправлю.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Уважаемый Flasher,
Если бы Вы сделали такой скрипт, который находил бы файлы на локальных дисках во всех каталогах и подкаталогах по маске (например, "А") и заменял в имени файла "А" на "B", но с таким расчётом, что файл с "В" уже существует и его надо заменить.
По аналогии с запросом Koter, но на всех дисках (папках).
Если бы Вы сделали такой скрипт, который находил бы файлы на локальных дисках во всех каталогах и подкаталогах по маске (например, "А") и заменял в имени файла "А" на "B", но с таким расчётом, что файл с "В" уже существует и его надо заменить.
По аналогии с запросом Koter, но на всех дисках (папках).
Конечно (USB/eSATA).RuMaS писал(а):Есть карман, не знаю - он считается съемным?
>>
Код: Выделить всё
'=============================================================================
' Замена в базовых именах файлов структуры активного диска или всех дисков
' с удалением имеющихся файлов с аналогичными присвоенным именами
' Условие: путь запуска - пустой
' Параметры:
' 1) <активный диск / все диски: 1/2>
' 2) "<искомая строка>" (если нет, ввод в окне)
' 3) "<новая строка>" (если нет, ввод в окне - * в качестве пустой строки)
' Автор: Flasher ©
'=============================================================================
With WScript.Arguments
C = .Count
If C = 0 Then MsgBox "Не задан первый параметр!", 48 : WScript.Quit : End If
If C > 1 Then Search = .Item(1) Else Msg Search, "заменяемый"
Disks = .Item(0) : If C > 2 Then NewStr = .Item(2) Else Msg NewStr, "новый"
End With
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
If Disks = 1 Then
Drive = FSO.GetDriveName(WSH.CurrentDirectory) & ""
ForDrive Drive, Search, NewStr
ElseIf Disks = 2 Then
For Each D in FSO.Drives : ForDrive D, Search, NewStr : Next
End If : WSH.SendKeys "^R" : WSH.Popup "Файлы переименованы!", 2, " Результат", 64
Set WSH = Nothing : Set FSO = Nothing : WScript.Quit
Sub Msg(Text, Word)
Text = InputBox(String(5, vbnewline) & "Введите " & Word & " текст:", Space(10) & _
"Замена имён файлов и папок", 3) : If Len(Text) = 0 Then WScript.Quit
If Trim(Text) = "*" Then Text = ""
End Sub
Sub ForDrive(Drv, Find, Repl)
DT = FSO.GetDrive(Drv).DriveType : Set DFiles = FSO.GetFolder(Drv).Files
If DT > 0 And DT < 4 Then
If DFiles.Count > 0 Then ForFile DFiles, Find, Repl, Drv
ForFolder Drv, Find, Repl
End If
End Sub
Sub ForFolder(Fold, Find, Repl)
Set SubF = FSO.GetFolder(Fold).SubFolders
If SubF.Count > 0 Then
For Each Folder in SubF
ForFolder Folder, Find, Repl
Set FF = Folder.Files
ForFIle FF, Find, Repl, Folder & ""
Next
End If
End Sub
Sub ForFile(DFil, Find, Repl, Dir)
On Error Resume Next
For Each File in DFil
BN = FSO.GetBaseName(File)
If Find <> "" And InStr(BN, Find) Then
NewName = Replace(BN, Find, Repl) & "." & FSO.GetExtensionName(File)
NewF = Dir & NewName : If FSO.FileExists(NewF) Then FSO.DeleteFile NewF
File.Name = NewName
End If
Next
End Sub
Последний раз редактировалось Flasher Ср июн 12, 2013 12:43, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Групповое переименование файлов внутри помеченных папок
Очень занадобилась такая штука:
1. Имеется исходная папка (подобие каталога).
2. Внутри - находятся подпапки и файлы (и то и другое одновременно).
3. Внутри подпапок, в свою очередь находятся подпапки и файлы (этакое дерево...).
4. Помечаются необходимые папки и файлы (одновременно и то и другое) на каком либо уровне вложения.
Задача:
1. Переименовать все файлы, содержащиеся в помеченных подпапках, и далее на всех уровнях вложения.
2. Имена помеченных и вложенных подпапок - не переименовывать.
3. Переименовать, одновременно с содержимым подпапок, помеченные файлы на текущем уровне вложения.
4. Переименование производится транслитом.
5. Переименование должно производиться "в один присест" по клавише, либо по щелчку мышью.
Пробовал использовать маску для имени в групповом переименовании: , но она переименовывает и файлы (то, что нужно) и папки (а это - нельзя). А содержимое папок - остается неизменным.
Сломал уже всю голову, при поиске по форуму - ничего похожего не нашел (либо список вложенных файлов - либо переименование, но на одном уровне вложения).
Подскажите, хотя бы способ, каким можно эту задачу выполнить.
1. Имеется исходная папка (подобие каталога).
2. Внутри - находятся подпапки и файлы (и то и другое одновременно).
3. Внутри подпапок, в свою очередь находятся подпапки и файлы (этакое дерево...).
4. Помечаются необходимые папки и файлы (одновременно и то и другое) на каком либо уровне вложения.
Задача:
1. Переименовать все файлы, содержащиеся в помеченных подпапках, и далее на всех уровнях вложения.
2. Имена помеченных и вложенных подпапок - не переименовывать.
3. Переименовать, одновременно с содержимым подпапок, помеченные файлы на текущем уровне вложения.
4. Переименование производится транслитом.
5. Переименование должно производиться "в один присест" по клавише, либо по щелчку мышью.
Пробовал использовать маску для имени в групповом переименовании: , но она переименовывает и файлы (то, что нужно) и папки (а это - нельзя). А содержимое папок - остается неизменным.
Сломал уже всю голову, при поиске по форуму - ничего похожего не нашел (либо список вложенных файлов - либо переименование, но на одном уровне вложения).
Подскажите, хотя бы способ, каким можно эту задачу выполнить.
sa писал(а):
Вот только как быть с п.5 - нужно как-то навесить эту последовательность действий на какую-нибудь кнопку. Как вообще это можно сделать (хотя бы способ) ???
Спасибо!!! Работает чудесно.А если после выделения нажать Ctrl+Shift+B и затем, выделив все файлы, выполнять групповое переименование?
Вот только как быть с п.5 - нужно как-то навесить эту последовательность действий на какую-нибудь кнопку. Как вообще это можно сделать (хотя бы способ) ???
visit120
Можно с помощью утилиты TCFS2 (отсюда). Предварительно надо создать команду em_MRT_Translit (на базе MULTIRENAME <имя шаблона>).
Кнопка примерно такая:
Можно с помощью утилиты TCFS2 (отсюда). Предварительно надо создать команду em_MRT_Translit (на базе MULTIRENAME <имя шаблона>).
Кнопка примерно такая:
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "tcm(2046, 1) tcm(3302, 1) delay(500) tem(`em_MRT_Translit`, 1) delay(500) send(`{ENTER}`, findwnd(`TMultiRename`)) delay(500) send(`{ESC}`, findwnd(`TMultiRename`)) tcm(540, 1)"
wcmicons.dll,70
В выделенном мультипереименовать все файлы пользовательской командой em_MRT_Translit
-1
Последний раз редактировалось sa Чт май 02, 2013 20:10, всего редактировалось 1 раз.