Войти

Показать полную графическую версию : Переименование файла по маске.


Damien_here
10-08-2012, 18:24
Добрый день!
Передо мной стоит задача автоматически(при помощи *.bat-файла) переименовывать файлы по следующей маске:
исходное имя файла: XXXXXYYYYY123.DAT
требуемое имя файла: XXXXXtmplt123.DAT

То есть в исходном имени файла надо символы с 5го по 10й заменить на фиксированнуй маску. В примере маска - это 'tmplt'.
Пока что удалось найти информацию только о том как добавить префикс в начало/конец файла или же заменить имя целиком. Как изменить фрагмент в середине имени - не могу разобраться.
Буду очень признателен за помощь в решении данной задачи!!!

El Sanchez
10-08-2012, 20:31
Damien_here,

@Echo Off
SetLocal
Set Source=C:\temp

For %%A In ("%Source%\*.DAT") Do Call :_Proc "%%A"
GoTo :EoF

:_Proc
Set FN=%~n1
If Not "%FN:~9,1%"=="" Ren %1 "%FN:~0,5%tmplt%FN:~10%%~x1"

Damien_here
11-08-2012, 11:51
El Sanchez,
спасибо за ответ!
При запуске приведенного кода возникала синтаксическая ошибка, добавил переменную в двойной процент - ошибка исчезла.

@Echo Off
SetLocal
Set Source=C:\temp

For %%A In ("%Source%\*.DAT") Do (
Set FN=%%~nA
If Not "%%FN:~9,1%%"=="" Call Ren "%%A" "%%FN:~0,5%%tmplt%%FN:~10%%%%~xA"
)



Имеется дополнительное условие к исходному условию - батник должен обрабатывать файл по факту его появления в каталоге A, то есть постоянно мониторить каталог на наличие в нем файлов, и при появлении переименовывать его и перемещать в каталог B?
Заранее благодарю за помощь!

Damien_here
11-08-2012, 15:31
Для решения обозначенной проблемы с ожиданием файла воспользовался утилитой sleep.exe и бесконечным циклом.
В принципе вопрос можно считать решенным, всем спасибо!

El Sanchez
12-08-2012, 10:52
При запуске приведенного кода возникала синтаксическая ошибка, добавил переменную в двойной процент - ошибка исчезла. »
Damien_here, не исчезла, мы оба с вами ошиблись, пост #2 исправил.

DonQuixote
13-06-2017, 12:51
Всем привет нужно переименовать файл найдя его в папке по маске
маска поиска=моё значение
%маска%FAXV на %маска%FA1V %маска%FA2V %маска%FA3V и т д.
то есть ищу файл по маске %маска%FAXV и переименовываю его с %маска%FAXV на %маска%FA(нужная мне цифра 1 или 2 или 3 и т д. смотря что мне нужно)V
все файлы в папке такова вида %маска%FAXV.
подскажите как это сделать.




© OSzone.net 2001-2012