Esercizio 2: Creazione di un file batch di produzione

In questo esempio viene illustrata la procedura di esportazione dei file DWG in più cartelle in una sola operazione. Viene utilizzato un file batch avanzato che include le funzionalità di registrazione e rilevamento degli errori.

Il file batch riceve tre parametri ogni volta che viene eseguito:

Uso di un file di registro

Il file di registro acquisisce l'intera finestra di comando per ogni file DWG. Utilizza il comando AutoCAD copyhist, che consente di spostare la cronologia della finestra di comando negli appunti del sistema. In questo esempio viene utilizzato winclip.exe, uno strumento Open Source, per incollarla nel file di registro.

Uso di un file batch esterno

È possibile richiamare il file batch da un file batch "esterno", ossia un file batch principale contenente solo chiamate al file batch secondario e che fornisce i parametri.

Ad esempio, si supponga di disporre dei disegni per tre città. Se l'operazione batch esporta una cartella di disegni di una città, il file batch esterno potrebbe contenere quanto indicato di seguito:

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:

Per utilizzare questo metodo, specificare un file export.log diverso per ogni chiamata oppure spostare la riga if exist export.log del export.log nel file batch esterno. In contrario, ogni chiamata sovrascriverà il registro precedente.

File batch di produzione di esempio

Nell'esempio seguente il file batch di produzione di esempio è denominato batchexport.bat. Crearlo in Blocco note, come nelle procedure precedenti.

@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

Situazione

È stato creato un file batch avanzato con funzionalità di registrazione e rilevamento degli errori per esportare i file DWG in più cartelle in una sola operazione.