|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование файлов с заменой символов по маске |
|
CMD/BAT - [решено] Переименование файлов с заменой символов по маске
|
Новый участник Сообщения: 11 |
Здравствуйте!
Нужно очень сделать батничек, который переименовывает файлы 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 Спасибо. |
|
Отправлено: 13:43, 25-01-2010 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать спасибо)
будем вникать) |
------- Отправлено: 13:01, 26-01-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Constantant:
@Echo off ::"¬" это ALT+0172 Setlocal ENABLEDELAYEDEXPANSION for /f "usebackq tokens=*" %%a in (`dir /b *.pdf`) do ( set Out= set /a i=-1 set "Str=%%~na" set "Str=!Str:_=-!" set "Str=!Str:+=-!" set "Str=!Str: =-!" set "Str=!Str:&=-!" call :func ren "%%a" !Str!.pdf ) Endlocal goto :eof :func set /a i+=1 call :parse set "char=%%Str:~%i%,1%%" if "%Char%"=="" ( set "Str=!Out:¬=-!" goto :eof ) if "%Char%"=="=" set Char=¬ set "Out=!Out!%Char%" call :func :parse %* |
|
Отправлено: 15:25, 26-01-2010 | #12 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
@Echo Off For %%Z In (*.pdf) Do Set "NameOld=%%Z"& Call :ReName Exit /B 0 :ReName Set NameLen=0& Set NameNew= :ReNameLoop Call Set "$C=%%NameOld:~%NameLen%,1%%" Set /A NameLen+=1 If Not "%$C%"==" " If Not "%$C%"=="_" If Not "%$C%"=="+" If Not "%$C%"=="&" If Not "%$C%"=="=" ( If Not "%$C%"=="" Set "NameNew=%NameNew%%$C%"& GoTo :ReNameLoop ) If Not "%$C%"=="" Set "NameNew=%NameNew%-"& GoTo :ReNameLoop REN "%NameOld%" "%NameNew%" GoTo :EOF Constantant, решено ? |
|
Отправлено: 05:26, 27-01-2010 | #13 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата amel27:
![]() Цитата amel27:
Вещь! И не надо подстановку делать, простое посимвольное сравнение. Кстати, сравнил время выполнения моего сценария с вашим. Сгенерировал 1000 текстовых файлов с уникальными именами (%random%ы, разделенные этими 5 символами) и включил секундомер. Мой сценарий выполнился в среднем за 1:51.8 мин., а ваш за 1:28.2 мин., так что Constantant, берите последний вариант. |
||
Отправлено: 10:44, 27-01-2010 | #14 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Ребята, вы все молодцы!
Всем спасибо! Очень помогли ![]() ![]() |
------- Отправлено: 13:07, 27-01-2010 | #15 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать вдогонку по теме - случайно наткнулся на утилиту FART (Find And Replace Text), которая кроме прочего может переименовывать файлы... к сожалению, для замены каждого символа потребовалась отдельная команда:
|
Отправлено: 12:09, 31-01-2010 | #16 |
Ветеран Сообщения: 902
|
Профиль | Отправить PM | Цитировать Похожая ситуация... Только необходимо заменить символ "\" на "/" в текстовом файле.
|
------- Отправлено: 02:54, 14-08-2010 | #17 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать Devils0411,
Option Explicit Dim FSO, TextStream, File, strContents, Document Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.GetFile("путь_к_файлу\input.txt") ' Исходный файл для обработки Set TextStream = File.OpenAsTextStream() Set Document = FSO.CreateTextFile("путь_к_файлу\output.txt") ' Выходной файл strContents = TextStream.ReadAll() Document.Write(Replace(strContents,"\","/")) ' Параметры замены Document.Close |
Отправлено: 12:32, 14-08-2010 | #18 |
Ветеран Сообщения: 902
|
Профиль | Отправить PM | Цитировать deepred, только хотелось бы все же средствами cmd, или cmd + какая-нибудь утилитка для замены символов.
|
------- Отправлено: 13:21, 14-08-2010 | #19 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать Devils0411,
|
Отправлено: 14:12, 14-08-2010 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - [addon] Internet Explorer 8 Rus (с заменой файлов IE6) версия 14.5.3 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 955 | 22-01-2021 22:59 | |
Система - [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 |
|