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

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

Ветеран


Contributor


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

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


composter,
Вот решение под Вашу новую постановку
Код: Выделить весь код
@Echo Off
cls

chcp 1251 >nul

Set "Pgm=C:\Program Files\Autodesk\AutoCAD 2014\accoreconsole.exe"
rem Set "Pgm=Z:\Test\test3.bat" 

Set "In=%CD%"
Set "MaskIn="%In%\*.dwg" "%In%\*.dxf""

Set "Pref1=___111___"
Set "Pref2=___222___"
Set "Pref3=___333___"
Set "Pref4=___444___"
Set "Pref5=___555___"

Set "OutBox=%In%\_Box_Out"
Set "TmpBox=%In%\_Box_Tmp"
Set "ErrBox=%In%\_Box_Err"

md "%OutBox%" 2>nul
md "%TmpBox%" 2>nul
md "%ErrBox%" 2>nul

Set "Scr1=puandau1.scr"
Set "Scr2=todxf.scr"
Set "Scr3=todwg.scr"
Set "Scr4=puandau2.scr"

FOR %%s IN ("%Scr1%" "%Scr2%" "%Scr3%" "%Scr4%") DO Copy "%In%\%%s" "%TmpBox%\" >nul

Set "ErrLog=%Date%-%Time%"
Set "ErrLog=%ErrLog::=_%"
Set "ErrLog=%ErrLog:/=_%"
Set "ErrLog=%ErrBox%\~%ErrLog:,=.%_Err.Log"

FOR %%f IN (%MaskIn%) DO (
	Call :DelAll "%%f"

	Copy "%%f" "%ErrBox%\" >nul
	Move /Y "%%f" "%TmpBox%\%Pref1%%%~nxf" >nul

	Call :Job "%TmpBox%\%Pref1%%%~nxf" "%TmpBox%\%Scr1%" "%TmpBox%\%Pref2%%%~nxf" "%%f"
	Call :Job "%TmpBox%\%Pref2%%%~nxf" "%TmpBox%\%Scr2%" "%TmpBox%\%Pref3%%%~nxf" "%%f"
	Call :Job "%TmpBox%\%Pref3%%%~nxf" "%TmpBox%\%Scr3%" "%TmpBox%\%Pref4%%%~nxf" "%%f"
	Call :Job "%TmpBox%\%Pref4%%%~nxf" "%TmpBox%\%Scr4%" "%TmpBox%\%Pref5%%%~nxf" "%%f"

	If Exist "%TmpBox%\%Pref5%%%~nf.*" (
		FOR %%s IN ("%TmpBox%\%Pref5%%%~nf.*") Do Move /Y "%%s" "%OutBox%\%%~nxf"
		Del "%ErrBox%\%%~nxf" 2>nul
	)
)

FOR %%s IN ("%Scr1%" "%Scr2%" "%Scr3%" "%Scr4%") DO Del "%TmpBox%\%%s" 2>nul
GoTo :Eof

:DelAll
	Del "%TmpBox%\%~n1.*" 2>nul
	Del "%OutBox%\%~nx1" 2>nul

	Del "%TmpBox%\%Pref1%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref2%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref3%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref4%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref5%%~n1.*" 2>nul
GoTo :Eof

:Job
	If Exist "%~dpn1.*" (
		FOR %%i IN ("%~dpn1.*") DO (
			Call "%Pgm%" /i "%%i" /s %2 /l en-US
		)
		If Exist "%~dpn3.*" (
			Del "%~dpn1.*"
		) Else (
			Move /Y "%~dpn1.*" "%ErrBox%\" >nul
			Echo ----- Исходный файл %4 от %~t1  %~z1b не обработан.>>"%ErrLog%"
			Echo                     перемещен "%ErrBox%\%~nx4" >>"%ErrLog%"
			Echo                               "%ErrBox%\%~nx1" >>"%ErrLog%"
			Echo -------------------------------------------------------------------->>"%ErrLog%"
		)
	)

1. Исходные файлы, .scr файлы помещаются в папку с батником
2. При нормальной обработке обработанные файлы с именами исходных помещаются в папку OutBox
3. При неуспешной обработке исходный файл и последний из имеющихся промежуточных файлов помещаются в папку ErrBox.
Сообщение о неуспешной обработке записывается в лог-файл с именем даты-времени обработки.

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


Последний раз редактировалось megaloman, 24-12-2016 в 20:52.


Отправлено: 20:45, 24-12-2016 | #32