此範例展示如何一次匯出多個資料夾中的多個 DWG 檔案。其使用包括錯誤偵測和記錄的增強批次檔案。
每次執行批次檔案時,它將接收三個參數:
在之前的範例中,每個 DWG 必須有一個相應的匯出紀要。此範例可讓您使用相應的紀要或使用預設紀要。如果 DWG 檔案沒有其自己的紀要,則它會使用預設紀要。
記錄檔為每個 DWG 檔案擷取整個指令視窗。它使用 AutoCAD 指令 copyhist (將指令視窗歷程移至系統剪貼簿)。此範例使用免費的開放原始碼工具 winclip.exe,將擷取的指令視窗貼至記錄檔。
您可以從「外部」批次檔案呼叫此批次檔案:外部批次檔案是主要批次檔案,其僅包含對提供參數的下級批次檔案。
例如,假設您有三個城市的圖面。如果批次作業匯出一個城市資料夾內的圖面,則外部批次檔案應包含以下內容:
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,並包括錯誤偵測和記錄。