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

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

Ветеран


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\test.bat" 

Set "MaskIn=*.dwg"

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

Set "In=%CD%"

Set "OutBox=%CD%\_OutBox"

Set "Out1=puandau1.scr"
Set "Out2=todxf.scr"
Set "Out3=todwg.scr"
Set "Out4=puandau2.scr"

Set "Derr=%In%\_In_err"

md "%OutBox%" 2>nul
md "%Derr%" 2>nul

For /F "usebackq delims=" %%f IN (`Dir "%In%\%MaskIn%" /B /A:-D 2^>nul`) Do (
	Copy "%In%\%%f" "%Derr%\" >nul
	Move /Y "%In%\%%f" "%OutBox%\%Pref1%%%f" >nul
	If Exist "%OutBox%\%Pref1%%%f" Call "%Pgm%" /i "%OutBox%\%Pref1%%%f" /s "%OutBox%\%Out1%" /l en-US
	If Exist "%OutBox%\%Pref2%%%f" Call "%Pgm%" /i "%OutBox%\%Pref2%%%f" /s "%OutBox%\%Out2%" /l en-US
	If Exist "%OutBox%\%Pref3%%%f" Call "%Pgm%" /i "%OutBox%\%Pref3%%%f" /s "%OutBox%\%Out3%" /l en-US
	If Exist "%OutBox%\%Pref4%%%f" Call "%Pgm%" /i "%OutBox%\%Pref4%%%f" /s "%OutBox%\%Out4%" /l en-US
	If Exist "%OutBox%\%%f" Del "%Derr%\%%f"
)
Как это работает:
Берётся исходный файл.
Копируется в папку для файлов, не прошедших обработку (Err).
Перемешается с префиксом 1 в папку с результатом (Out)
Далее последовательно вызывается обработчик, который делает последовательно в Out-папке из ранее обработанного файла файл с префиксом 2,3,4 и, наконец, с исходным именем (если я правильно понял логику работы вашего обработчика).
Если в Out - папке появился файл с исходным именем, то исходный файл в Err-папке удаляется.
Если нет - в Err папке сохраняется исходный файл, который можно обработать повторно, перенеся во входную папку ручками.

И так для всех файлов в исходной папке.
Какая радость от разделения папки с исходными файлами и результатом: можно несколько раз проводить обработку, не опасаясь навредить ранее обработанным файлам. Надеюсь, имена файлов уникальны? Иначе надо делать выходные папки с именами по времени обработки.

Я не представляю размер Ваших файлов и насколько они Вам дороги, иначе я бы предложил создать архивную папку и складывать туда все исходные файлы после успешной обработки.

Наверное, рационально обработку делать в отличной от Out папке, например, Tmp, при этом в Out отправлять успешные файлы, а в Tmp- недообработанные. Но тут не проблема в доработке, мне надо понимать, полезно ли Вам то, что я Вам предлагаю.

Единственное, не очень понял, что делать с файлами в Out-папке с префиксами (то есть при обработке был сбой): удалять?
Доработать батник для работы с несколькими расширениями - это мелочь, труднее понять, что нужно.

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


Последний раз редактировалось megaloman, 14-12-2016 в 21:22.

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

Отправлено: 21:09, 14-12-2016 | #13