CMD/BAT - [решено] Переименование файлов с заменой символов по маске
-
Constantant
-
amel27
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Цитата Constantant:
а без sed вообще ни как?
Еще один изврат (сценарий обязательно сохранить в кодировке DOS (OEM866)):
Код:
а без sed вообще ни как?
CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Еще один изврат (сценарий обязательно сохранить в кодировке DOS (OEM866)):
Код:
Код: Выделить всё
@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
%*-
El Sanchez
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Цитата El Sanchez:
Еще один изврат
Класс!.. Но он не позволяет менять "!"... Если не против, немного доработал:
Код:
Constantant,
Еще один изврат
CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Класс!.. Но он не позволяет менять "!"... Если не против, немного доработал:
Код:
Код: Выделить всё
@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 :EOFConstantant,
решено
?-
amel27
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Цитата amel27:
Но он не позволяет менять "!"
Так и не требуется ж
Цитата amel27:
Если не против, немного доработал
amel27,
Вещь! И не надо подстановку делать, простое посимвольное сравнение.
Кстати, сравнил время выполнения моего сценария с вашим. Сгенерировал 1000 текстовых файлов с уникальными именами (%random%ы, разделенные этими 5 символами) и включил секундомер. Мой сценарий выполнился в среднем за 1:51.8 мин., а ваш за 1:28.2 мин., так что Constantant, берите последний вариант.
Но он не позволяет менять "!"
CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Так и не требуется ж
Цитата amel27:
Если не против, немного доработал
CMD/BAT - [решено] Переименование файлов с заменой символов по маске
amel27,
Вещь! И не надо подстановку делать, простое посимвольное сравнение.
Кстати, сравнил время выполнения моего сценария с вашим. Сгенерировал 1000 текстовых файлов с уникальными именами (%random%ы, разделенные этими 5 символами) и включил секундомер. Мой сценарий выполнился в среднем за 1:51.8 мин., а ваш за 1:28.2 мин., так что Constantant, берите последний вариант.
-
El Sanchez
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Ребята, вы все молодцы!
Всем спасибо!
Очень помогли
!
Всем спасибо!
Очень помогли
!-
Constantant
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Ребята, вы все молодцы!
Всем спасибо!
Очень помогли
!
Всем спасибо!
Очень помогли
!-
Constantant
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
вдогонку по теме - случайно наткнулся на утилиту
Код:
FART
(Find And Replace Text), которая кроме прочего может переименовывать файлы... к сожалению, для замены каждого символа потребовалась отдельная команда:Код:
Код: Выделить всё
fart -f *.pdf "_" "-"
fart -f *.pdf "+" "-"
fart -f *.pdf "&" "-"
fart -f *.pdf "=" "-"
fart -f *.pdf " " "-"-
deepred
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
Похожая ситуация... Только необходимо заменить символ "\" на "/" в текстовом файле.
-
deepred
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
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-
deepred
Re: CMD/BAT - [решено] Переименование файлов с заменой символов по маске
deepred, только хотелось бы все же средствами cmd, или cmd + какая-нибудь утилитка для замены символов.