练习 2:创建生产批处理文件

此示例展示了如何一次输出多个文件夹中的所有 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 文件。