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

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

Ветеран


Contributor


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

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


rider42,
Вот вариант. Обработанные файлы перемещаем в архивный каталог, поэтому, если файлов в исходной папке >89, батник можно запустить несколько раз и обрабатывать следующие файлы.
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Soft_In"
	Set "BoxArc=Z:\Soft_Arc"
	Set "ExtIn=mp4"

	Set "BoxOut=Z:\Soft_Out"
	Set "ExtOut=mkv"
	
	Set /A Nmax=99

	If Not Exist "%BoxOut%" Md "%BoxOut%"
	If Not Exist "%BoxArc%" Md "%BoxArc%"

	Set /A NNN=10
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*.%ExtIn%" /b /a:-d /O:D`) DO Call :MassIn "%%~nf"
	FOR /L %%i IN (11,1,%NNN%) DO (
		Call Ren "%%BoxIn%%\%%@@1_%%i%%.%%ExtIn%%" "%%@@2_%%i%%.%%ExtIn%%"

rem Обработка программами
		Call Copy "%%BoxIn%%\%%@@2_%%i%%.%%ExtIn%%" "%%BoxOut%%\%%@@2_%%i%%.%%ExtOut%%" >nul
		Call Echo "%%BoxIn%%\%%@@1_%%i%%.%%ExtIn%%"
		Call Echo "%%BoxIn%%\%%@@2_%%i%%.%%ExtIn%%"
		Echo:
rem ---------------------

rem		Call Ren "%%BoxIn%%\%%@@2_%%i%%.%%ExtIn%%" "%%@@1_%%i%%.%%ExtIn%%"
		Call Move /Y "%%BoxIn%%\%%@@2_%%i%%.%%ExtIn%%" "%%BoxArc%%\%%@@1_%%i%%.%%ExtIn%%" >nul
		Call Ren "%%BoxOut%%\%%@@2_%%i%%.%%ExtOut%%" "%%@@1_%%i%%.%%ExtOut%%"

	)
pause
GoTo :Eof

:MassIn
	If %NNN% EQU %Nmax% Exit /B 1
	Set /A NNN+=1
	Set "@@1_%NNN%=%~1"
	Set "@@2_%NNN%=%NNN%"
GoTo :Eof
То, что отмечено красным - имитация Вашей обработки -
Цитата rider42:
в другой папке создаётся такой набор файлов: ... под конец надо переименовать этот список файлов в исходные имена с поправкой на новое расширение »
В архив перемещаем исходные файлы с исходными именами
Вообще-то сначала переименовывать все файлы, а потом их обрабатывать - плохая идея. Всё равно Вы обрабатываете файлы по одному. Можно переименовывать последовательно каждый файл в одно и то же имя (например, 11), а затем после обработки восстанавливать старое имя со старым (в исходной) и новым расширениями (в выходной) папках
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Soft_In"
	Set "ExtIn=mp4"

	Set "BoxOut=Z:\Soft_Out"
	Set "ExtOut=mkv"
	
	If Not Exist "%BoxOut%" Md "%BoxOut%"

	Set /A NNN=11
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*.%ExtIn%" /b /a:-d /O:D`) DO (
		Ren "%BoxIn%\%%f" "%NNN%.%ExtIn%"

rem Обработка программами
		Echo "%BoxIn%\%%f"
		Echo "%BoxIn%\%NNN%.%ExtIn%"
		Echo:
		Copy "%BoxIn%\%NNN%.%ExtIn%" "%BoxOut%\%NNN%.%ExtOut%" >nul
rem ---------------------

		Ren "%BoxIn%\%NNN%.%ExtIn%" "%%f"
		Ren "%BoxOut%\%NNN%.%ExtOut%" "%%~nf.%ExtOut%"
	)
pause
GoTo :Eof

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


Последний раз редактировалось megaloman, 30-11-2018 в 00:59.

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

Отправлено: 00:18, 30-11-2018 | #7