Cvičení 2: Vytvoření výsledného dávkového souboru

V tomto příkladu je znázorněn postup exportu souborů DWG z více složek současně. Používá rozšířený dávkový soubor, který obsahuje detekci a protokolování chyb.

Dávkový soubor získává při každém spuštění tři parametry:

Použití souboru protokolu

Soubor protokolu zachycuje celé příkazové okno pro každý soubor DWG. Používá příkaz aplikace AutoCAD kopiehist, který přesune historii příkazového okna do systémové schránky. V tomto příkladu se ke vložení historie do souboru protokolu používá soubor winclip.exe, volně šiřitelný nástroj s otevřeným kódem.

Použití vnějšího dávkového souboru

Dávkový soubor vyvoláte z „vnějšího“ dávkového souboru: hlavního dávkového souboru, který obsahuje pouze volání do podřízeného dávkového souboru a předává parametry.

Předpokládejme například, že máte výkresy tří měst: Pokud dávková operace exportuje složku výkresů jednoho města, může vnější dávkový soubor obsahovat následující informace:

batchexport Redding\DWGs Redding\SDFs Redding\DefExport.epf
batchexport Spokane\DWGs Spokane\SDFs Spokane\DefExport.epf
batchexport Dubuque\DWGs Dubuque\SDFs Dubuque\DefExport.epf
Poznámka:

Chcete-li tento způsob použít, zadejte jiný soubor export.log pro každé volání nebo přesuňte řádek if exist export.log del export.log do vnějšího dávkového souboru. Jinak každé volání přepíše předchozí protokol.

Vzorové vytvoření dávkového souboru

V následujícím vzoru má dávkový soubor název batchexport.bat. Vytvořte jej v programu Poznámkový blok, jako jste to dělali v předcházejících postupech.

@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

Kde se nyní nacházíte

Vytvořili jste rozšířený dávkový soubor s detekcí chyb a protokolováním pro export souborů DWG z více složek najednou.