Ćwiczenie 2: Tworzenie produkcyjnego pliku wsadowego

W tym przykładzie przedstawiono metodę jednoczesnego eksportowania plików DWG z wielu folderów. Wykorzystywany jest ulepszony plik wsadowy obejmujący funkcje wykrywania błędów i zapisywania w dzienniku.

Plik wsadowy podczas każdego uruchomienia otrzymuje trzy parametry:

Używanie pliku dziennika

W pliku dziennika rejestrowane jest całe okno wiersza polecenia dla każdego pliku DWG. Ten plik korzysta z polecenia copyhist programu AutoCAD umożliwiającego przeniesienie historii okna wiersza polecenia do schowka systemowego. W tym przykładzie użyto darmowego, o otwartym dostępie do kodu źródłowego narzędzia winclip.exe umożliwiającego wklejenie zawartości schowka do pliku dziennika.

Używanie zewnętrznego pliku wsadowego

Plik wsadowy można wywołać z „zewnętrznego” pliku wsadowego: głównego pliku wsadowego zawierającego tylko odwołania do podrzędnego pliku wsadowego wraz z parametrami.

Przykładowo przypuśćmy, że użytkownik posiada rysunki pochodzące z trzech miast. Jeśli operacja wsadowa eksportuje rysunki z jednego miasta, to w zewnętrznym pliku wsadowym może znajdować następujący tekst:

batchexport Redding\DWGs Redding\SDFs Redding\DefExport.epf
batchexport Spokane\DWGs Spokane\SDFs Spokane\DefExport.epf
batchexport Dubuque\DWGs Dubuque\SDFs Dubuque\DefExport.epf
Uwaga:

Aby korzystać z tej metody, należy określić oddzielny plik export.log dla każdego wywołania lub przenieść wiersz if exist export.log del export.log do zewnętrznego pliku wsadowego. W przeciwnym razie każde wywołanie spowoduje zastąpienie poprzedniego dziennika.

Przykładowy produkcyjny plik wsadowy

Nazwa poniższego przykładowego produkcyjnego pliku wsadowego to batchexport.bat. Tak jak poprzednio plik należy utworzyć go w programie Notatnik.

@echo off
setlocal
rem Get and verify the command parameters
set srcDir=%1
set outDir=%2
set defEpf=%3
if '%srcDir%' == '' goto usage
if '%outDir%' == '' goto usage
if '%defEpf%' == '' goto usage
if not exist %srcDir% (
echo Source Directory "%srcDir%" not found.
goto done
)
if not exist %srcDir%\*.dwg (
echo No DWG files found in "%srcDir%".
goto done
)
if not exist %outDir% (
echo Destination Directory "%outDir%" not found.
goto done
)
if not exist %defEpf% (echo Default Export Profile "%defEpf%" not found.
goto done
)
if exist export.log del export.log
rem Loop through the DWGs, exporting each
for %%f in (%srcDir%\*.dwg) do (
if exist %outDir%\%%~nf.sdf del %outDir%\%%~nf.sdf
echo. >> export.log
echo ******* EXPORTING %%f TO %outDir%\%%~nf.sdf ******* >> export.log
echo ******* EXPORTING %%f TO %outDir%\%%~nf.sdf *******
rem Create the Export Script ...
echo _-mapexport>     export.scr
echo FDO_SDF>>        export.scr
echo %outDir%\%%~nf.sdf>> export.scr
echo _yes>>             export.scr
if exist %%~df%%~pf%%~nf.epf (
rem Use a profile that has the same name as the DWG
echo %%~df%%~pf%%~nf.epf>> export.scr
) else (
rem Use the default profile 
echo %defEpf%>>  export.scr
)
echo _proceed>>             export.scr
echo _copyhist>>      export.scr
echo _quit>>          export.scr
"C:\Program Files\AutoCAD Map 3D 2009\acad.exe" %%f /nologo /b export.scr
winclip -p >> export.log
)
goto done
:usage
echo USAGE: %0 [sourceDir] [destDir] [defaultExportProfile]
echo example: %0 Redding\dwgs Redding\sdfs Redding\defExport.epf
:done

Do tej pory

Utworzono udoskonalony plik wsadowy zawierający funkcje wykrywania błędów i zapisywania w dzienniku, umożliwiający jednoczesne eksportowanie plików DWG z wielu folderów.