Ejercicio 2: Creación de un archivo por lotes de producción

En este ejemplo se muestra cómo exportar archivos DWG en varias carpetas a la vez. Utiliza un archivo por lotes mejorado que incluye el registro y la detección de errores.

El archivo por lotes recibe tres parámetros cada vez que se ejecuta:

Uso de archivos de registro

El archivo de registro captura toda la ventana de comandos para cada archivo DWG. Utiliza el comando de AutoCAD copiahist, que mueve el historial de la ventana de comandos al portapapeles del sistema. Este ejemplo utiliza winclip.exe, una herramienta de código abierto gratuita para pegarla en el archivo de registro.

Uso de archivos por lotes exteriores

Puede invocar al archivo por lotes desde un archivo por lotes "exterior": un archivo por lotes principal que solo invoca al archivo por lotes subordinados, proporcionando los parámetros.

Por ejemplo, supongamos que dispone de dibujos para tres ciudades. Si la operación por lotes exporta una carpeta de dibujos para una ciudad, el archivo por lotes exterior podría contener lo siguiente:

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

Para utilizar este método, especifique un archivo export.log diferente para cada llamada, o bien mueva la línea if exist export.log del export.log al archivo por lotes exterior. De lo contrario, cada llamada sobrescribirá el registro anterior.

Ejemplo de archivo por lotes de producción

El siguiente ejemplo de archivo por lotes de producción se denomina batchexport.bat. Créelo en el Bloc de notas, como hizo en los procedimientos anteriores.

@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

Resultado

Ha creado un archivo por lotes mejorado con registro y detección de errores para exportar archivos DWG en varias carpetas a la vez.