![]() |
Переименование файлов с заменой символов по маске
Здравствуйте!
Нужно очень сделать батничек, который переименовывает файлы PDF, а конкретнее заменяет в названиях существующих файлов символы " ", "_","+","=","&" на "-". Я сделал что так что бы заменял только один символ, а вот как подставит регулярное выражение не пойму. renamer.bat: Код:
for %%g in (*.pdf) do call :s_subroutine "%%~nxg" "%%g" Спасибо. |
Вложений: 1
Пример с использованием утилиты sed:
Код:
@echo off |
спасибо большое!
а без sed вообще ни как? |
Цитата:
- использовать сторонние CMD-утилиты типа SED (коих немеренно); - задействовать в решении скрипты на VBS или PowerShell. Кстати, еще вариант на SED (из комплекта UnxUtils): :) Код:
For /F "Delims=" %%i In ( |
|
Цитата:
Код:
@Echo Off Цитата:
|
ни один из вышеприведённых скриптов не работает...
я попытался сделать вот так: Код:
for %%g in ("C:\kharitonov\My Documents\PDF\*.pdf") do call :s_subroutine "%%~nxg" "%%g" я 3 дня знаком с шелом... помогите, пожалуйся, ни чего не понимаю. |
Цитата:
|
|
Цитата:
Код:
DIR /B/A-D *.pdf|SED "s/[ _&+=]/-/g" Цитата:
Код:
CD C:\kharitonov\My Documents\PDF Код:
PUSHD C:\kharitonov\My Documents\PDF Код:
PUSHD /? |
спасибо)
будем вникать) |
Цитата:
Код:
@Echo off |
Цитата:
Код:
@Echo Off Constantant, решено ? |
Цитата:
Цитата:
Вещь! И не надо подстановку делать, простое посимвольное сравнение. Кстати, сравнил время выполнения моего сценария с вашим. Сгенерировал 1000 текстовых файлов с уникальными именами (%random%ы, разделенные этими 5 символами) и включил секундомер. Мой сценарий выполнился в среднем за 1:51.8 мин., а ваш за 1:28.2 мин., так что Constantant, берите последний вариант. |
Ребята, вы все молодцы!
Всем спасибо! Очень помогли :yahoo: :clapping: ! |
вдогонку по теме - случайно наткнулся на утилиту FART (Find And Replace Text), которая кроме прочего может переименовывать файлы... к сожалению, для замены каждого символа потребовалась отдельная команда:
Код:
fart -f *.pdf "_" "-" |
Похожая ситуация... Только необходимо заменить символ "\" на "/" в текстовом файле.
|
Devils0411,
Код:
Option Explicit |
deepred, только хотелось бы все же средствами cmd, или cmd + какая-нибудь утилитка для замены символов.
|
Devils0411,
Код:
Echo off |
А прям в переменной эти символы можно заменить?
|
Нужен простой скрип для переименования *.msi пакета с любым названием в заданное. Все забыл уже и сам нашел простое решение.
ren *.msi newname.msi, думаю и дальше разберусь сам. |
Народ, есть задача в одних файлах jpeg (*.jpg) заменить _ на ~~
В других после шестого символа вставить ~~ например 4480354941.jpg на 448035~~4941.jpg |
Цитата:
Код:
@Echo Off Цитата:
Код:
@Echo Off |
Огромное спасибо!
Второй работает на ура! Первый произвольно в некоторых файлах ставит 4 тильды, поясните плиз как исправить P.S. Где можно почитать про написание таких скриптов, расшифровку атрибутов |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Код:
:_Func |
явная ошибка, чет не срастается....
|
Цитата:
Я полагаю, что задача у вас такая: заменить символ _ в именах файлов на ~~, если символ _ в имени не встречается, то после шестого символа добавить ~~. Код:
@Echo Off |
Цитата:
mozg777, исправил, попробуйте так. Код:
:_Func |
Цитата:
Код:
Set "FN=%FileName:*~~=%" |
2gora: Спасибо!, Работает!
2 El Sanchez - Эффект повторения в некоторых файлах остался |
Комрады! Выручате!
Получаемый отчет вручную не импортируется в программу, необходимо его привести к другому виду получаю файл 7420_Fil_AngANGARSK_D2011-01-21.csv (обычный текстовой) внутри "branchno","store","country","period","hour","zone","customers - incoming","customers - outgoing" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","09:00","Floor 1, main1","7","3" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","11:00","Floor 1, main1","","1" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","12:00","Floor 1, main1","9","10" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","13:00","Floor 1, main1","10","7" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","14:00","Floor 1, main1","12","10" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","15:00","Floor 1, main1","9","14" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","16:00","Floor 1, main1","19","11" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","17:00","Floor 1, main1","16","16" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","18:00","Floor 1, main1","7","10" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","19:00","Floor 1, main1","15","11" "AngANGARSK","203 Ecco-geox","Russian Federation","2011-01-21","20:00","Floor 1, main1","10","6" нужно привести к виду storeid, shopname, branchno, date, location, time, in-coming, out-going 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,09:00,7,3 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,11:00,0,1 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,12:00,9,10 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,13:00,10,7 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,14:00,12,10 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,15:00,9,14 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,16:00,19,11 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,17:00,16,16 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,18:00,7,10 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,19:00,15,11 7420,203 Ecco-geox,AngANGARSK,2011-01-21,Main1,20:00,10,6 То есть первую строку заменяем полностью, в остальных первый параметр берем из имени файла, удаляем все кавычки, остальное как душе угодно. Хочется универсальности, так как такого вида пять файлов. |
Боюсь, средствами cmd универсальности добиться тяжело. По крайней мере, я не вижу приемлимого пути. Но конкретную задачу решить просто:
Код:
@echo off |
Цитата:
Код:
@echo off |
универсальность в смысле имя файла может быть например 9810_Fil_ClarksFort_D2011-01-22.csv хотя здесь можно добиться универсальности только относительно даты в файле. для каждого магазина (Fil_ClarksFort) нужен свой батник.
о! Самый идеальный вариант - в цикле перебирать имена файлов в папке с расширением csv и передавать их в переменную FileName Второй скрипт работает неправильно. включается только первая стройка и все. |
Помогите пожалуйста нужно чтобы в файлах (*.*) менялся символ ~ например на _
нашел тут пример: @Echo Off Set Source=C:\test\sed For %%A In ("%Source%\*.*") Do Call :_Func "%%~nxA" GoTo :EoF :_Func Set FileName=%~n1 Ren "%Source%\%~1" "%FileName:_=~~%%~x1" он заменяет _ на ~~ но когда меняю на Ren "%Source%\%~1" "%FileName:~=_%%~x1" то не работает( |
Цитата:
Решил проблему так: Код:
@echo off PS. Пример дан с заменой тильды и в расширении. Если это не нужно - чуть-чуть надо поменять. |
Помогите с такой задачей:
есть куча файлов определенного формата в названии ???#??????#????.txt ????#??????#????.txt Нужно символы между решетками заменить на текущее число, т.е. к примеру 0930: ????#DD0930#????.txt, поскольку перед первой решеткой кол-во символов варируется, я не могу просто отсчитать от начала кол-во символов. Между решетками кол-во символов постоянно. |
|
доброй ночи..
мне тоже надо по маске символы переименовать но выходит как то криво. вот: имеються 2 или больше файла appliedenergistics2-rv3-beta-5.jar appliedenergistics2-rv2-stable-10.jar я их переименовываю так rename "%BINDIR%appliedenergistics2-rv3-*.jar" "2_6_appliedenergistics2-rv3-*.jar" rename "%BINDIR%appliedenergistics2-rv2-*.jar" "2_6_appliedenergistics2-rv2-*.jar" а получаеться это 2_6_appliedenergistics2-rv2-le-10.jar 2_6_appliedenergistics2-rv3--5.jar куда то теряются 4 символа полсе знака - должно быть так 2_6_appliedenergistics2-rv2-stable-10.jar 2_6_appliedenergistics2-rv3-beta-5.jar %BINDIR% путь к паке где лежит батник и файлы в идеале мне надо что бы bat находил фйал по шаблону "appliedenergistics2*.jar" или такому "GTTweaker-1*.jar и добавлял в начале имени например 2_6_ и любое другое по моему выбору а имя целеком не трогал но заметил что символы между - . и первой точкой в имени исчезают например как тут 1_0_galacticgreg-0.7.jar rename "%BINDIR%galacticgreg-0*.jar" "1_0_galacticgreg-0*.jar" 0 теряется по этому я его дописал выше -0 сечас батник такова вида
@echo on
SET BINDIR=%~dp0 CD /D "%BINDIR%" set poi1=jar* set poi2=zip* set poi3=litemod* set Rnam=INFO_ rename "%BINDIR%CraftGuide-1*.jar" "%Rnam%GUI_S_CraftGuide-1*.jar" rename "%BINDIR%LLOverlayReloaded-1*.jar" "%Rnam%GUI_LLOverlayReloaded-1*.jar" rename "%BINDIR%IC2.Nei.Plugin.Version*.jar" "%Rnam%GUI_3_S_IC2.Nei.Plugin.Version*.jar" смог сам найти решение
Код:
@echo on |
Время: 03:34. |
Время: 03:34.
© OSzone.net 2001-