Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование файлов с заменой символов по маске

Ответить
Настройки темы
CMD/BAT - [решено] Переименование файлов с заменой символов по маске

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте!
Нужно очень сделать батничек, который переименовывает файлы PDF, а конкретнее заменяет в названиях существующих файлов символы " ", "_","+","=","&" на "-".
Я сделал что так что бы заменял только один символ, а вот как подставит регулярное выражение не пойму.

renamer.bat:
Код: Выделить весь код
for %%g in (*.pdf) do call :s_subroutine "%%~nxg" "%%g"
:s_subroutine
set _sss=%1
set _ddd=%_sss:_=-%
ren %2 %_ddd%
goto :eof
set _ddd=%_sss:_=-% вот эта строка заменяет все символы "_" на символ "-", а вот как здесь пристроить регулярное выражение мне не понятно.

Спасибо.

Отправлено: 13:43, 25-01-2010

 

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1228
Благодарности: 964

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar sed.rar
(36.2 Kb, 57 просмотров)

Пример с использованием утилиты sed:
Код: Выделить весь код
@echo off
for /f "usebackq tokens=*" %%a in (`dir /b *.pdf`) do call :func "%%~na"
goto :eof

:func
for /f "tokens=*" %%a in ('echo %1^|sed /^"[ _^=+^&]^"/s//-/g^|sed /\^"/s///g') do ren %1.pdf %%a.pdf
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:56, 25-01-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо большое!
а без sed вообще ни как?

-------
constantant.ru - САЙТЫ ОТ 60К


Отправлено: 22:27, 25-01-2010 | #3


Googler


Сообщения: 3665
Благодарности: 1561

Профиль | Отправить PM | Цитировать


Цитата Constantant:
без sed вообще ни как? »
штатными средствами CMD никак, т.к. заменяемые символы являются метасимволами самого CMD... кроме того, в Windows отсутствуют штатные утилиты по замене текста (тем более через RegExp), так что варианта два:

- использовать сторонние CMD-утилиты типа SED (коих немеренно);
- задействовать в решении скрипты на VBS или PowerShell.

Кстати, еще вариант на SED (из комплекта UnxUtils):
Код: Выделить весь код
For /F "Delims=" %%i In (
'DIR /B *.pdf^|SED "s/.$//;s/.*/\"\0\"/;h;s/[ _+=&]/-/g;x;G;s/\n/ /"'
) Do REN %%i

Последний раз редактировалось amel27, 26-01-2010 в 12:48. Причина: очепятка

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:50, 26-01-2010 | #4


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
штатными средствами CMD никак »
Я уже смирился с этим
Цитата amel27:
Кстати, еще вариант на SED »
вот только я не пойму как этот Sed применять.. как его устанавливать?
то что в хелпе мне не очень понятно)
пример хотелось бы увидеть)

Большое спасибо за отзывы

-------
constantant.ru - САЙТЫ ОТ 60К


Отправлено: 10:41, 26-01-2010 | #5


Googler


Сообщения: 3665
Благодарности: 1561

Профиль | Отправить PM | Цитировать


Цитата Constantant:
Я уже смирился с этим »
тогда немного изврата не будет лишним:
Код: Выделить весь код
@Echo Off

For %%Z In (*.pdf) Do For /F "Tokens=1-26 Delims=&=_+ " %%a In ("%%Z") Do (
Set $T="%%a-%%b-%%c-%%d-%%e-%%f-%%g-%%h-%%i-%%j-%%k-%%l-%%m-%%n-%%o-%%p-%%q-%%r-%%s-%%t-%%u-%%v-%%w-%%x-%%y-%%z"
Set $F="%%Z"& CALL :SUB_REN )

Exit /B 0

:SUB_REN
If %$T:~-2,1%==- Set $T=%$T:-"="%& GoTo SUB_REN
REN %$F% %$T%& GoTo :EOF
Цитата Constantant:
то что в хелпе мне не очень понятно »
инфы всякой много, хотя бы тут: Просто о sed
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:31, 26-01-2010 | #6


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


ни один из вышеприведённых скриптов не работает...
я попытался сделать вот так:
Код: Выделить весь код
for %%g in ("C:\kharitonov\My Documents\PDF\*.pdf") do call :s_subroutine "%%~nxg" "%%g"
:s_subroutine
set aaa=%1^|SED "s/.$//;s/.*/\"\0\"/;h;s/[ _+=&]/-/;x;G;s/\n/ /"
ren %2 %aaa%
goto :eof
но всё равно ни чего не выходит...
я 3 дня знаком с шелом... помогите, пожалуйся, ни чего не понимаю.

-------
constantant.ru - САЙТЫ ОТ 60К


Отправлено: 12:31, 26-01-2010 | #7


Googler


Сообщения: 3665
Благодарности: 1561

Профиль | Отправить PM | Цитировать


Цитата Constantant:
ни один из вышеприведённых скриптов не работает »
скрипты для запуска из текущего каталога с *.PDF, т.е. нужно предварить CD или PushD

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:34, 26-01-2010 | #8


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
тогда немного изврата не будет лишним: »
а вот это реально работает))))

но всё же хотелось бы разобраться с SED...

Цитата amel27:
нужно предварить CD или PushD »
чувствую себя идиотом

-------
constantant.ru - САЙТЫ ОТ 60К


Отправлено: 12:35, 26-01-2010 | #9


Googler


Сообщения: 3665
Благодарности: 1561

Профиль | Отправить PM | Цитировать


Цитата Constantant:
всё же хотелось бы разобраться с SED »
опечатку исправил, пример команды разбора:
Код: Выделить весь код
DIR /B/A-D *.pdf|SED "s/[ _&+=]/-/g"
Цитата Constantant:
чувствую себя идиотом »
Код: Выделить весь код
CD C:\kharitonov\My Documents\PDF
...
Код: Выделить весь код
PUSHD C:\kharitonov\My Documents\PDF
...
справка по команде:
Код: Выделить весь код
PUSHD /?
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:52, 26-01-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование файлов с заменой символов по маске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - [addon] Internet Explorer 8 Rus (с заменой файлов IE6) версия 14.5.3 jameszero Наборы обновлений для Windows XP/2003/Windows 7 949 Вчера 23:02
Система - [addon] Internet Explorer 7 Rus (с заменой файлов IE6) версия 14.5.3 jameszero Наборы обновлений для Windows XP/2003/Windows 7 1277 06-02-2015 16:30
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске VitHAK Скриптовые языки администрирования Windows 14 23-12-2013 08:57
Установка - Помогите с заменой файлов в дистрибутиве AlexThePeacemaker Microsoft Windows 2000/XP 0 12-12-2009 11:42
Разрешение записи файлов по маске Green_Fox Microsoft Windows 2000/XP 5 11-08-2006 12:35




 
Переход