演習 2: 本番バッチ ファイルを作成する

この例では、複数のフォルダの DWG ファイルを同時に書き出す方法を示します。エラーを検出してログに記録する拡張バッチ ファイルを使用します。

実行するたびに、バッチ ファイルに次の3つのパラメータが渡されます。

ログ ファイルを使用します

ログ ファイルは、DWG ファイルごとにコマンド ウィンドウでの操作をすべて記録します。AutoCAD コマンド copyhist を使用して、コマンド ウィンドウの履歴をシステムのクリップボードに移動します。この例では、無償のオープンソース ツールの winclip.exe を使用して、履歴をログ ファイルに貼り付けます。

外部バッチ ファイルを使用します

「外部」バッチ ファイルからバッチ ファイルを呼び出すことができます。外部バッチ ファイルは、下位バッチ ファイルの呼び出しのみが記述され、パラメータを提供するマスター バッチ ファイルです。

たとえば、3つの都市の図面があるとします。1つの都市の図面のフォルダをバッチ処理で書き出す場合、外部バッチ ファイルは次のように記述されます。

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

この方法を利用するには、呼び出しごとに異なる export.log を指定するか、行 if exist export.log del export.log を外部バッチ ファイルに移動します。いずれかを行わないと、呼び出しを行うたびに前のログが上書きされます。

サンプル本番バッチ ファイル

次のサンプル本番バッチ ファイルの名前は batchexport.bat です。これまで説明した手順を実行して、メモ帳で作成します。

@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

現在の状況

エラーを検出してログに記録し、複数のフォルダの DWG ファイルを同時に書き出す拡張バッチ ファイルを作成しました。