Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Нужна программа или скрипт поиска и переименования файлов (http://forum.oszone.net/showthread.php?t=349114)

Shauniam 30-06-2021 14:51 2961189

Нужна программа или скрипт поиска и переименования файлов
 
Я давно занимаюсь администрированием своего компьютера,часто приходится сортировать и чистить(свою "лошадку") вручную,приходится драгоценное время терять на такую нудную работу.
Нужна программа или скрипт(чтобы избежать танцев с бубном) по поиску файлов и папок(с опцией переименования), в названии которых есть одно определенное слово.Есть подобная программа-Everything,но в ней невозможно переименовать все файлы и папки за один проход,нужно многократно водить различные комбинации регулярных выражений,пока не добьешься окончательного результата переименования,все равно ручками приходится доводить до конца.Для примера есть программа @Text Replacer,так вот она делает свою функцию максимально,...но только она ищет слова внутри файлов,а нужна такая же программа(поиск-переименование),но только работающая по названиям файлов и папок!
В богатых просторах интернета такую программу я не нашел.Есть ли такие программисты, которые способны создать такую программу или скрипт(желательно bat,com,vbs,ps1)?Возможен вариант введения готового кода в командную строку.

megaloman 30-06-2021 15:55 2961199

Shauniam, Что такое слово? Чем оно ограничено? Например, слово красный содержится в прекрасный. Что переименовывать: одно слово на другое, несколько слов на какое-то одно, несколько слов на несколько других слов? Приведите примеры. Есть ли такие заказчики, которые способны четко поставить задачу без лишних слов? :)
Где осуществляется поиск файлов и папок - в заданной(ых) папке(ах)?

Foreigner 30-06-2021 15:56 2961200

Я для переименования файлов использую powershell. Но эта тема слишком широка, что бы дать однозначный ответ. Обычно это, прямо из консоли:

Код:

PS > & {
          dir <КРИТЕРИЙ> | % {
        ren $_ ($_.Name -replace '<Какие-то условия'>)
    }

PS >


Iska 30-06-2021 17:33 2961213

Shauniam, с таким ТЗ и результат будет — ХЗ.

megaloman 02-07-2021 08:11 2961270

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 2961279

Прошу снисходительно отнестись к моим первым шагам в форумах,несмотря на множество прожитых лет я удовлетворялся прямым общением,получал ответы от экспертов- лицо в лицо. Внимательно прочитал ваши ответы и мы продолжаем.
Конечно из короткого диалога или вопроса невозможно уточнить все детали,вы любите точность возведенную в степень,чтобы дать конкретный-точный ответ на поставленную задачу и ценю ваш труд и время- уточняю:
Из всех дисков-из названий папок,файлов нужно убрать слово-допустим: consensus.net.Нужна поисковая программа-первое т.е. найти все папки и файлы со словом или частью названия- consensus.net,чтобы они все были в одном окне и можно все сразу выделить и переименовать на- consent.ru или вовсе убрать как часть названия,или вставив любое число, или знак-зависит от функциональности программы, или возможностей скрипта.
Теперь получилось конкретно.Все мы учимся-совершенных нет!

megaloman 02-07-2021 13:45 2961292

Shauniam,
Цитата:

Цитата 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 2961350

Пробовал удалить указанные Echo - выдает синтаксическую ошибку. Текст вводил в разных кодировках.Первоначальный скрипт проходит по всем файлам и папкам,но ничего не меняет,только дублирует файлы и папки,повторяя запись.Я в скриптах не разбираюсь,чтобы подгонять к необходимым функциям,недавно столкнулся с надобностью использовать скрипты.Помогите(пожалуйста),заранее благодарен.Если нужно- приложу скриншот.

megaloman 03-07-2021 14:50 2961351

Shauniam, Переименуйте Ваш .bat в .txt и приложите к сообщению.
Кстати, какой у Вас Windows?

Shauniam 03-07-2021 20:38 2961361

Вложений: 1
ВИНДА:
Название ОС: Майкрософт Windows 10 Домашняя
Версия ОС: 10.0.19042 Н/Д построение 19042
Изготовитель ОС: Microsoft Corporation
Параметры ОС: Изолированная рабочая станция
Сборка ОС: Multiprocessor Free

megaloman 03-07-2021 21:06 2961363

Вложений: 1
Shauniam, Вы радикальным образом убили не только Echo но и Ren. АкуратнЕЕ надо быть.

Не называйте Ваш скрипт именем команды. В CMD Rename==Ren - это команда, можете получить непредсказуемые результаты

Shauniam 05-07-2021 02:54 2961428

Я нашел вариант переименования и он находится рядом 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 2961431

Цитата:

Я нашел вариант переименования
Кто ищет, тот обрящет.
Но у Вас были запросы:
1. Переименовывать файлы и папки (в этом варианте папки не присутствуют).
2. Файлы и папки ищутся в папке и подпапках - нет здесь этого. Этот скрипт работает только для текущей папки.
3. Вы возжелали осуществлять поиск по всем дискам - Тут этого и близко нет.
Нечеткость постановки задачи?
Что не устраивает в моём решении?

Shauniam 05-07-2021 08:52 2961432

Цитата:

Нечеткость постановки задачи?
Что не устраивает в моём решении?
Чёткости в постановке задачи приходит с опытом, притом в шапке запроса все было достаточно точно указано,но без указания системы на которой я работаю, еще маленькие детали которые мы уточняли в процессе.Цели мы еще не достигли,если что вы свободны,я никого не принуждаю мне помогать,если поможете-огромное спасибо!

megaloman 05-07-2021 08:57 2961433

Цитата:

Цитата Shauniam
Цели мы еще не достигли »

конкретизируйте.

Shauniam 05-07-2021 09:20 2961434

Цель уже близка и я в предыдущем сообщении показал:

Цитата:

Я нашел вариант переименования и он находится рядом

Код:

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 2961446

Цитата:

1. Переименовывать файлы и папки (в этом варианте папки не присутствуют).
2. Файлы и папки ищутся в папке и подпапках - нет здесь этого. Этот скрипт работает только для текущей папки.
3. Вы возжелали осуществлять поиск по всем дискам - Тут этого и близко нет.
Нечеткость постановки задачи?
Что не устраивает в моём решении?
ответы:
1.Я могу идти на компромиссы и удостовериться тем что есть в золотом запасе интернета,-которые не всегда находятся в первых рядах поисковых служб,а часто "на неведомых дорожках".У кого то имеются в запасе.Вот потому мой вопрос-просьба.
2-3.В скриптах есть коды для рекурсивного поиска и работы,можно даже пройтись по всем дискам.
Простите, за мой русский язык!


Время: 14:21.

Время: 14:21.
© OSzone.net 2001-