Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


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

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


Исправляю погрешности постановки: В имени файла день или месяц могут быть любыми (одно или двузначными)
Код: Выделить весь код
@Echo Off

	Set "Sep===))"
	Set /A NSep=4
	Set "FName=D:\Delete\ma2_*_*.txt"
	Set "Pref=12345_5_"

SetLocal EnableExtensions EnableDelayedExpansion
For  %%f IN ("%FName%") DO Call :ReLast "%%f"
GoTo :Eof

:ReLast

Del "%~1.tmp" 2>nul
 
Set "Str="
FOR /F "usebackq delims=" %%s IN (`type "%~1"`) DO (
	If Not "!Str!"=="" >>"%~1.tmp" Echo !Str!
	Set "Str=%%s"
)
If Not "!Str:~-%NSep%!"=="%Sep%" Del "%~1.tmp" 2>nul & GoTo :Eof
If "!Str:~0,-%NSep%!"=="" Del "%~1.tmp" 2>nul & GoTo :Eof 

>>"%~1.tmp" Echo !Str:~0,-%NSep%!
>>"%~1.tmp" Echo !Str:~-%NSep%!

FOR /F "usebackq tokens=2,3 delims=_" %%s IN ('%~n1') DO Set "YYYYMM=%%s" & Set "DD=0%%t"
Set "MM=0!YYYYMM:~4,2!
Set "Name=%~dp1%Pref%!YYYYMM:~2,2!!MM:~-2!!DD:~-2!%~x1"

move /Y "%~1.tmp" "!Name!" >nul
If Exist "!Name!" Del "%~1" 2>nul
GoTo :Eof
Путь подправьте (или уберите) в маске

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 12-07-2016 в 19:56.

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

Отправлено: 19:28, 12-07-2016 | #18