Показать полную графическую версию : Сравнение конечного количества файлов с начальным
composter
21-12-2016, 23:36
попробовал скрипт от megaloman пишет "puandau1.scr": Can't find file.
на счет скрипта от alpap , я не совсем понял куда его подставлять
попробовал впихнуть обработку на ошибки в scr файл, но консоль автокада никак не хочет обрабатывать ошибки. в автокаде все срабатывает ,а вот консоль просто игнорирует обработку ошибок.
я понял что обрабатывать тип ошибки не нужно, если она возникла то лечится одним путем. поэтому лог файл не нужен и промежуточные не нужны. те которые не прошли их исходники в папку error , те которое прошли в папку out
megaloman
22-12-2016, 09:40
Жил был царь, у царя был двор, во дворе был кол, на колу - мочало. Не начать ли нам сказку сначала? То есть, вернёмся к постановке задачи. Осознайте, пожалуйста, что ни у кого нет Ваших реальных файлов для обработки, скорее всего, мало у кого из участников обсуждения имеется AutoCad и сомневаюсь, что подавляющее число жителей вселенной знают, как работает утилита accoreconsole.exe. Поэтому я могу только моделировать её работу (для этого у меня есть батник, преобразующий имена файлов в соответствии с описанным Вами алгоритмом и который Вам совершенно неинтересен и который в приводимом для Вас решении я всегда отключаю).
До сих пор обсуждались файлы .dwg. Как оказалось, во время обработки они получают префиксы и на каком-то шаге имеют другое расширение. Откуда берутся файлы puandau1.scr, todxf.scr", todwg.scr, puandau2.scr" и где они должны располагаться, Вы до сих пор не говорили. Я предположил, что они - результат работы утилиты. Опишите, как проходит обработка, какие файлы при этом участвуют, получаются, и где они должны располагаться. Иначе, читаем русскую народную сказку.
Ну, то, что:
поэтому лог файл не нужен и промежуточные не нужны. те которые не прошли их исходники в папку error , те которое прошли в папку out »
наконец-то осознано — уже колоссальный прогресс. Лучше поздно, чем никогда.
composter
22-12-2016, 22:30
изначально у меня есть батник в папке и исполняемые файлы для автокадовской консоли : puandau1.scr, todxf.scr, todwg.scr, puandau2.scr(располагаются там же где и батник)
я скидываю в эту же папку dwg и dxf файлы, которые будут обрабатываться.
так как после некоторых обработок файлов появляется файл с новым расширением dwg и dxf (в зависимости от скрипта),то я в скрипте не могу удалить открытый файл, и чтобы было легче понять прошел файл обработку или нет то после каждой обработки появляется файл с новым префиксом по возрастанию (например был префикс ___111___ , добавился новый файл с префиксом ___222___)
файл переносится в папку temp и проходит постепенную обработку всеми скриптами(*.scr). в конце найти файл самый новый по дате создания и проверить есть ли в его имени префикс ___555___(этот префикc получает файл после финальной обработки) , если есть у файла префикс ___555___ то переименовать его (убрать 9 символов) и переместить в папку out , если нет то переименовать его (убрать 9 символов) и переместить в папку error. все файлы в папке temp удаляются.
и так с каждым файлом dwg и dxf в исходной папке.
megaloman
23-12-2016, 11:42
если есть у файла префикс ___555___ то переименовать его (убрать 9 символов) и переместить в папку out , если нет то переименовать его (убрать 9 символов) и переместить в папку error. Если файл есть - переименуем. А если его нет, что переименовавать?
composter
23-12-2016, 12:54
файл переносится в папку temp и проходит постепенную обработку ...
это значит что даже если он не прошел ни одной обработки то его первоначальная версия останется
еще лучше если бы что при переносе он получал префикс ___111___, чтобы при конечном переименывавании не обрезал часть файла если он не прошел ни одной обработки
(например был префикс ___111___ , »
если есть у файла префикс ___555___ то переименовать его »
если нет то переименовать его »
что при переносе он получал префикс ___111___, »
для данной ситуации был ___111___ и стал ___111___ и непонятно прошел он первую обработку или все.
интересно, каким образом утилита обрабатывает файл. Будет ошибка, если файл не обработан? При каких-то условиях утилита не станет обрабатывать файл или в любом случае обработает, но не так как надо и как это будет ясно при этом? Есть какой-то четкий критерий того что файл идеален (прошел все утилиты с победой)? Что меняется в файле (время, размер, расширение), если он не проходит как надо хоть одну из утилит.
После осознания и приведения в порядок этих вопросов можно выстроить алгоритм действий, а уже после этого можно играться с именами и перемещениями.
composter
23-12-2016, 16:21
До первой обработки файл переносится в папку и при перименовании получает перфикс ___111___
После первой обработки, появляется новый файл тольок его префикс будет ___222___ , файл с перфиксом ___111___ остается. если же обработка прошла не удачно то файл с префиксом ___222___ не появится, и не получит все последующие префиксы, файл с префиксом ___111___ остается на месте.
если будет ошибка при обработке,то консоли автокада пофиг, ошибка просто пропустится и файл с новым префиксом не создасться
если файл прошел все обработки то у него будет префикс ___555___ , если какую ту обработку не прошел то его префикс будет меньше (___444___ или ___333___)
в таком случае чем не устраивает мой код из п20?
и да. Чего надо добиться не на выходе (найти последний прошедший как понимаю), а в идеале - чтобы все прошли в конце концов или отбор конкретных это и есть конец задачи.
composter
23-12-2016, 16:46
так в 20 соббщени вроде запись в лог файл ...
в конце найти файл самый новый по дате создания и проверить есть ли в его имени префикс ___555___(этот префикc получает файл после финальной обработки) , если есть у файла префикс ___555___ то переименовать его (убрать 9 символов) и переместить в папку out , если нет то переименовать его (убрать 9 символов) и переместить в папку error. все файлы в папке temp удаляются.
@echo off
set "d=papka"& set "rf=dwg"
set "d_out=out"& set "err=error"
if not exist "%d_out%" md "%d_out%"
if not exist "%err%" md "%err%"
dir/a-d/b/o-d/tc "%d%"|set/p name=^& cmd/v/c echo !name!^|^>nul find "___555___" ^&^& cmd/v/c move "%d%\!name!" "%d_out%\new.%rf%" ^|^| cmd/v/c move "%d%\!name!" "%err%\new.%rf%"
pause
set "d=papka"
"papka" - основная папка со всеми файлами.
megaloman
24-12-2016, 20:45
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.
Сообщение о неуспешной обработке записывается в лог-файл с именем даты-времени обработки.
composter
09-01-2017, 13:10
если ошибок среди файлов нет, то все проходит на ура!!!!
если же есть ошибка то в папке остается файл и файл с перфиксом и лог файл. можно сделать так чтобы файл с префиксом тоже удалялся.
и еще можно в конце (после всех операции с файлами) добавить удаление файлов *.dwg и *.dxf из исходной папки (где они изначально находились) (без подпапок), а то в процессе ошибки в некоторых случаях сохраняется кривой файл в папке запуска батника, который нафиг не нужен
лог на всякий случай прикладываю
megaloman
09-01-2017, 15:20
composter, не прошло и полгода ...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.