Показать полную графическую версию : Нужна программа или скрипт поиска и переименования файлов
Shauniam
30-06-2021, 14:51
Я давно занимаюсь администрированием своего компьютера,часто приходится сортировать и чистить(свою "лошадку") вручную,приходится драгоценное время терять на такую нудную работу.
Нужна программа или скрипт(чтобы избежать танцев с бубном) по поиску файлов и папок(с опцией переименования), в названии которых есть одно определенное слово.Есть подобная программа-Everything,но в ней невозможно переименовать все файлы и папки за один проход,нужно многократно водить различные комбинации регулярных выражений,пока не добьешься окончательного результата переименования,все равно ручками приходится доводить до конца.Для примера есть программа @Text Replacer,так вот она делает свою функцию максимально,...но только она ищет слова внутри файлов,а нужна такая же программа(поиск-переименование),но только работающая по названиям файлов и папок!
В богатых просторах интернета такую программу я не нашел.Есть ли такие программисты, которые способны создать такую программу или скрипт(желательно bat,com,vbs,ps1)?Возможен вариант введения готового кода в командную строку.
megaloman
30-06-2021, 15:55
Shauniam, Что такое слово? Чем оно ограничено? Например, слово красный содержится в прекрасный. Что переименовывать: одно слово на другое, несколько слов на какое-то одно, несколько слов на несколько других слов? Приведите примеры. Есть ли такие заказчики, которые способны четко поставить задачу без лишних слов? :)
Где осуществляется поиск файлов и папок - в заданной(ых) папке(ах)?
Foreigner
30-06-2021, 15:56
Я для переименования файлов использую powershell. Но эта тема слишком широка, что бы дать однозначный ответ. Обычно это, прямо из консоли:
PS > & {
dir <КРИТЕРИЙ> | % {
ren $_ ($_.Name -replace '<Какие-то условия'>)
}
PS >
Shauniam, с таким ТЗ и результат будет — ХЗ.
megaloman
02-07-2021, 08:11
Shauniam, ХЗ устроит ли Вас по Вашему ТЗ@Echo Off
cls
Call :ReFile "D:\CMD_Forum\Box_In" "Sign" "1 1 1"
Call :ReFile "D:\CMD_Forum\Box_In" "Remote" "22222222222"
Call :ReFile "D:\CMD_Forum\Box_In" "Spec" "Tra la la"
Call :ReFile "D:\CMD_Forum\Box_In" "Попов" "Микельанджело Буанаротти"
Call :ReFold "D:\CMD_Forum\Box_In" "Chapter" "Параграф № "
Call :ReFold "D:\CMD_Forum\Box_In" "ForFind" "My great Find"
pause
Exit /B 0
:ReFile
FOR /R %1 %%f IN ("*%~2*.*") DO (Set "Name=%%~nf" &Call Ren "%%f" "%%Name:%~2=%~3%%%%~xf")
Exit /B
:ReFold
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir %1 /S /B /A:D ^|Sort /R`) DO (Set "Name=%%~nd" &Call Ren "%%d" "%%Name:%~2=%~3%%%%~xd")
Exit /B
Shauniam
02-07-2021, 10:24
Прошу снисходительно отнестись к моим первым шагам в форумах,несмотря на множество прожитых лет я удовлетворялся прямым общением,получал ответы от экспертов- лицо в лицо. Внимательно прочитал ваши ответы и мы продолжаем.
Конечно из короткого диалога или вопроса невозможно уточнить все детали,вы любите точность возведенную в степень,чтобы дать конкретный-точный ответ на поставленную задачу и ценю ваш труд и время- уточняю:
Из всех дисков-из названий папок,файлов нужно убрать слово-допустим: consensus.net.Нужна поисковая программа-первое т.е. найти все папки и файлы со словом или частью названия- consensus.net,чтобы они все были в одном окне и можно все сразу выделить и переименовать на- consent.ru или вовсе убрать как часть названия,или вставив любое число, или знак-зависит от функциональности программы, или возможностей скрипта.
Теперь получилось конкретно.Все мы учимся-совершенных нет!
megaloman
02-07-2021, 13:45
Shauniam, Из всех дисков »Как-то так:@Echo Off
cls
FOR /F "usebackq delims= " %%i IN (`"wmic logicaldisk where "drivetype^='3'" get caption | findstr.exe /C:":""`) DO (
If /I Not "%%i"=="C:" (
Call :ReFile "%%i" "consensus.net" "consent.ru"
Call :ReFold "%%i" "consensus.net" "consent.ru"
)
)
pause
Exit /B 0
:ReFile
FOR /R %1 %%f IN ("*%~2*.*") DO (Set "Name=%%~nxf" &Call Echo Ren "%%f" "%%Name:%~2=%~3%%")
Exit /B
:ReFold
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir %1 /S /B /A:D ^|Sort /R`) DO (Set "Name=%%~nxd" &Call Echo Ren "%%d" "%%Name:%~2=%~3%%")
Exit /B
Для реальной работы Echo уберите.
Я сделал процесс для всех дисков, кроме C: - посчитал, что это не нужно. Ежели это Вас не устроит замените:
If /I Not "%%i"=="C:" (
If /I Not "%%i"==":" (
Shauniam
03-07-2021, 14:15
Пробовал удалить указанные Echo - выдает синтаксическую ошибку. Текст вводил в разных кодировках.Первоначальный скрипт проходит по всем файлам и папкам,но ничего не меняет,только дублирует файлы и папки,повторяя запись.Я в скриптах не разбираюсь,чтобы подгонять к необходимым функциям,недавно столкнулся с надобностью использовать скрипты.Помогите(пожалуйста),заранее благодарен.Если нужно- приложу скриншот.
megaloman
03-07-2021, 14:50
Shauniam, Переименуйте Ваш .bat в .txt и приложите к сообщению.
Кстати, какой у Вас Windows?
Shauniam
03-07-2021, 20:38
ВИНДА:
Название ОС: Майкрософт Windows 10 Домашняя
Версия ОС: 10.0.19042 Н/Д построение 19042
Изготовитель ОС: Microsoft Corporation
Параметры ОС: Изолированная рабочая станция
Сборка ОС: Multiprocessor Free
megaloman
03-07-2021, 21:06
Shauniam, Вы радикальным образом убили не только Echo но и Ren. АкуратнЕЕ надо быть.
Не называйте Ваш скрипт именем команды. В CMD Rename==Ren - это команда, можете получить непредсказуемые результаты
Shauniam
05-07-2021, 02:54
Я нашел вариант переименования и он находится рядом http://forum.oszone.net/thread-164590-4.html
for %%g in (*.*) do call :s_subroutine "%%~nxg" "%%g"
:s_subroutine
set _sss=%1
set _ddd=%_sss:consensus.net=consent.ru%
ren %2 %_ddd%
goto :eof
Только ищет и переименовывает файлы,а нужно чтобы и папки переименовывал,так как и папки под таким же названием как и файлы т.е. часть названия- consensus.net
megaloman
05-07-2021, 08:17
Я нашел вариант переименованияКто ищет, тот обрящет.
Но у Вас были запросы:
1. Переименовывать файлы и папки (в этом варианте папки не присутствуют).
2. Файлы и папки ищутся в папке и подпапках - нет здесь этого. Этот скрипт работает только для текущей папки.
3. Вы возжелали осуществлять поиск по всем дискам - Тут этого и близко нет.
Нечеткость постановки задачи?
Что не устраивает в моём решении?
Shauniam
05-07-2021, 08:52
Нечеткость постановки задачи?
Что не устраивает в моём решении?
Чёткости в постановке задачи приходит с опытом, притом в шапке запроса все было достаточно точно указано,но без указания системы на которой я работаю, еще маленькие детали которые мы уточняли в процессе.Цели мы еще не достигли,если что вы свободны,я никого не принуждаю мне помогать,если поможете-огромное спасибо!
megaloman
05-07-2021, 08:57
Цели мы еще не достигли »конкретизируйте.
Shauniam
05-07-2021, 09:20
Цель уже близка и я в предыдущем сообщении показал:
Я нашел вариант переименования и он находится рядом
for %%g in (*.*) do call :s_subroutine "%%~nxg" "%%g"
:s_subroutine
set _sss=%1
set _ddd=%_sss:consensus.net=consent.ru%
ren %2 %_ddd%
goto :eof
Только ищет и переименовывает файлы,а нужно чтобы и папки переименовывал,так как и папки под таким же названием как и файлы т.е. часть названия- consensus.net
Shauniam
05-07-2021, 10:48
1. Переименовывать файлы и папки (в этом варианте папки не присутствуют).
2. Файлы и папки ищутся в папке и подпапках - нет здесь этого. Этот скрипт работает только для текущей папки.
3. Вы возжелали осуществлять поиск по всем дискам - Тут этого и близко нет.
Нечеткость постановки задачи?
Что не устраивает в моём решении?
ответы:
1.Я могу идти на компромиссы и удостовериться тем что есть в золотом запасе интернета,-которые не всегда находятся в первых рядах поисковых служб,а часто "на неведомых дорожках".У кого то имеются в запасе.Вот потому мой вопрос-просьба.
2-3.В скриптах есть коды для рекурсивного поиска и работы,можно даже пройтись по всем дискам.
Простите, за мой русский язык!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.