@setlocal
        @if "%_echo%" == "" echo off

        set bldtools=%~dp0
        path %bldtools%;%path%

        call %1  %1 %2 %3 %4 %5

        set logfile=%logpath%\%~n0.log

        for %%f in (%logfile%) do mkdir %%~dpf 2>nul
        for %%f in (%patching%\update\z) do mkdir %%~dpf 2>nul
        echo %~n0: start %date% %time% > %logfile%
        if exist %patching%\update\update.url del %patching%\update\update.url
        call %bldtools%\setlog %loglinkpath% %logpath%

        for %%c in (%cablist%) do if not exist %newfiles%\%%c goto failed

rem  create url.inc

        if %psfname%.==. set psfname=prebuilt
        for %%f in (%psfname%) do echo     %server%/%%~nxf> %patching%\url.inc

rem  build each cabinet .inc list

        for %%c in (%cablist%) do listcab %newfiles%\%%c "    %%s" /out:%patching%\%%~nc.inc

rem  build [SourceDisksFiles] list

        for %%c in (%cablist%) do listcab %newfiles%\%%c "    %%s=1" /out:%patching%\%%~nc.sdf
        echo. | findstr "nothere" > %patching%\all
        for %%c in (%cablist%) do copy %patching%\all+%patching%\%%~nc.sdf %patching%\all2 >nul & del %patching%\all & ren %patching%\all2 all

rem  this is a temporary fix because update\sp1.cat=1 isn't in [SourceDisksFiles]
findstr /i /c:"update\sp1.cat=1" %newfiles%\update\update.inf >nul
if not errorlevel 1 goto nohack
echo     update\sp1.cat=1 >>%patching%\all
:nohack

        sort < %patching%\all > %patching%\sorted
        uniq < %patching%\sorted > %patching%\sdf.inc

rem  compose update.url using C preprocessor

   echo cl -nologo -C -EP -Tc %template% -I %patching% \> %patching%\update\update.url >>%logfile%
        cl -nologo -C -EP -Tc %template% -I %patching%  > %patching%\update\update.url 2>>%logfile%

rem  clean up

        for %%c in (%cablist%) do del %patching%\%%~nc.inc %patching%\%%~nc.sdf
        del %patching%\url.inc
        del %patching%\sdf.inc
        del %patching%\all
        del %patching%\sorted

        goto done

:failed

        for %%c in (%cablist%) do if not exist %newfiles%\%%c echo %~n0: File %newfiles%\%%c not found.
        goto leave

:done

        echo %~n0 finished %patching%\update\update.url

:leave

   echo %~n0: end %date% %time% >> %logfile%

        endlocal