Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Ветеран


Contributor


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

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


Цитата Busla:
я бы попробовал объяснить заказчику »
Программы пишутся для клиента, конечно, с клиентом надо работать, но если для него главное - номер файла, то дата - это как комментарий. Кто девушку ужинает, тот её и танцует.
А перед тем, как переименовывать, я бы проанализировал имя файла, чтобы не исказить имя файла не соответствуещее критерию
Код: Выделить весь код
@Echo Off
Call :RenMask "%~1"
GoTo :Eof
 
:RenMask
	If "%~1"=="" Echo No arguments for CMD-file  "%~dpnx0"& GoTo :Eof
	If Not Exist "%~1" Echo File  "%~1"   Not Found& GoTo :Eof

	Set "FMask=[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_20[0-9][0-9][0-1][0-9][0-3][0-9]\.pdf"

	Set "FName=%~nx1"
	Set "NewName=%FName:~0,9%%FName:~15,2%.%FName:~13,2%.%FName:~9,4%%FName:~17,4%"
	Echo %FName%| Findstr.exe /R /B /I "%FMask%" >nul&& Ren "%~1" "%NewName%"|| Echo File name "%~1"  incorrect
GoTo :Eof
Путь к целевому файлу указывается параметром пакетного файла. Также можно просто перетащить целевой файл на пакетный файл в Проводнике.
Если протелепатить, то, скорее всего, имеется папка с кучей подобных файлов, которые надо переименовать по капризу заказчика.
Код: Выделить весь код
@Echo Off
cls
Set "FileIn=Z:\Box_In\Тра ля ля\????????_20??????.pdf"

FOR %%f IN ("%FileIn%") DO Call :RenMask "%%~f"
pause
GoTo :Eof
 
:RenMask
	If "%~1"=="" Echo No arguments for CMD-file  "%~dpnx0"& GoTo :Eof
	If Not Exist "%~1" Echo File  "%~1"   Not Found& GoTo :Eof

	Set "FMask=[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_20[0-9][0-9][0-1][0-9][0-3][0-9]\.pdf"

	Set "FName=%~nx1"
	Set "NewName=%FName:~0,9%%FName:~15,2%.%FName:~13,2%.%FName:~9,4%%FName:~17,4%"
	Echo %FName%| Findstr.exe /R /B /I "%FMask%" >nul&& Ren "%~1" "%NewName%"|| Echo File name "%~1"  incorrect
GoTo :Eof
Маска файлов с путём к папке указывается явно в скрипте в переменной FileIn. Можно, конечно, сделать так, чтобы работало при перетаскивании имени папки на батник, но я не сделал, посчитал, что это одна специфическая папка. Скрипт можно выполнять многократно - входной контроль не позволит переименовать уже переименованные файлы.
Возможно, я переусложнил задачу

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


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

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

Отправлено: 13:05, 13-07-2017 | #6