Batch file 发生下载错误时如何强制退出命令行bat文件

Batch file 发生下载错误时如何强制退出命令行bat文件,batch-file,Batch File,亲爱的 这是我的.bat命令行 我使用bitsadmin/transfer命令从url下载。 但得到错误(如断开网络…等),我需要继续执行保持命令 但现在我无法取得成就。。。我该怎么办 @echo off :: Filter updater for HCK and HLK :::::::::::::::::::::::::: Settings ::::::::::::::::::::::::::::::::: :: Notice: As of July 2015, the HCK and the

亲爱的 这是我的.bat命令行 我使用bitsadmin/transfer命令从url下载。 但得到错误(如断开网络…等),我需要继续执行保持命令

但现在我无法取得成就。。。我该怎么办

@echo off
:: Filter updater for HCK and HLK
:::::::::::::::::::::::::: Settings :::::::::::::::::::::::::::::::::
:: Notice: As of July 2015, the HCK and the HLK filter updates are the exact same file, downloaded from the same location!
SET "source=https://sysdev.microsoft.com/member/SubmissionWizard/LegalExemptions/HCKFilterUpdates.cab"

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

SET "destination=C:\FilterUpdates.cab"

if not exist "%DTMBIN%\" (
    echo ERROR: folder "%DTMBIN%"
    echo does not exist! Please verify that you have the controller installed.
    pause
    exit /B 1
)

echo Please make sure that all instances of the Studio are turned OFF!


echo Downloading Filters...
bitsadmin /transfer "Downloading Filters" "%source%" "%destination%"
if errorlevel 1 goto end
echo Extracting...
expand -i "%destination%" -f:UpdateFilters.sql "%DTMBIN%\"
if not errorlevel 0 echo ERROR & exit /B 1
echo Installing...
pushd "%DTMBIN%\"
if not errorlevel 0 echo ERROR & exit /B 1
"%DTMBIN%\updatefilters.exe " /s
if not errorlevel 0 echo ERROR & exit /B 1
popd

:end
exit

您的问题可能是由
bitsadmin
生成的错误级别引起的:其中一些是负值,如果错误级别1,则测试
将被评估为false(
如果错误级别n
对于大于或等于
n
的值为true)

您需要读取并测试
errorlevel
变量的值

if not %errorlevel%==0 exit /b 1
但有时,
bitsadmin
会出现错误,并生成
errorlevel 0
,因此,您需要手动检查状态

@echo关闭
setlocal enableextensions disabledelayedexpansion
::HCK和HLK的筛选器更新程序
:设置:设置:设置:设置:设置:设置:设置:设置:
::注意:截至2015年7月,HCK和HLK过滤器更新
::是从同一位置下载的完全相同的文件!
设置“源”=https://sysdev.microsoft.com/member/SubmissionWizard/LegalExemptions/HCKFilterUpdates.cab"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
如果不存在“%DTMBIN%\”(
回显错误:文件夹“%DTMBIN%”
echo不存在!请验证是否已安装控制器。
暂停
退出/B 1
)
设置“destination=C:\FilterUpdate.cab”
如果存在“%destination%”删除/q“%destination%”
echo请确保Studio的所有实例都已关闭!
正在创建下载任务。。。
设置“taskName=[HCK_FilterUpdater]”
>努尔(
rem删除任务(如果已存在)
bitsadmin/列表|查找“%taskName%”和&bitsadmin/取消“%taskName%”
rem创建任务
bitsadmin/创建“%taskName%”
rem在任务中包含我们的文件
bitsadmin/addfile“%taskName%”%source%”%destination%”
rem开始下载
bitsadmin/恢复“%taskName%”
)
回音下载。。。
设置“exitCode=”
对于(1500)中的/l%%a,如果没有为/f“delims=“%%a in”()定义exitCode,则不执行
bitsadmin/信息“%taskName%”
^|findstr/b/l/c:“{”
“)do for/f”标记=3,*”%%b in(“%%a”)do(
如果“%%~b”==“已转移”(
设置“exitCode=0”
>nul bitsadmin/完成“%taskName%”
回音…完成
)
如果“%%~b”==“错误”(
设置“exitCode=1”
bitsadmin/geterror“%taskName%”findstr/b/c:“错误”
>nul bitsadmin/取消“%taskName%”
)
如果未定义exitCode(
回声(%%b%%c
超时/t2>num
)
)
如果未定义退出代码(回显超时和退出/b 1)
如果不存在“%destination%”(回显错误并退出/b 1)
回声扩展。。。
>nul expand-i“%destination%”-f:UpdateFilters.sql“%DTMBIN%”
如果错误级别1(回显错误和退出/b 1)
echo正在安装。。。
pushd“%DTMBIN%”| |(回显错误并退出/B1)
“\updatefilters.exe”/s | |(回显错误并退出/b 1)
邻苯二胺

您的问题可能是由
bitsadmin
生成的错误级别造成的:其中一些是负值,如果错误级别1
测试
将被评估为false(
如果错误级别n
对于大于或等于
n
的值为true)

您需要读取并测试
errorlevel
变量的值

if not %errorlevel%==0 exit /b 1
但有时,
bitsadmin
会出现错误,并生成
errorlevel 0
,因此,您需要手动检查状态

@echo关闭
setlocal enableextensions disabledelayedexpansion
::HCK和HLK的筛选器更新程序
:设置:设置:设置:设置:设置:设置:设置:设置:
::注意:截至2015年7月,HCK和HLK过滤器更新
::是从同一位置下载的完全相同的文件!
设置“源”=https://sysdev.microsoft.com/member/SubmissionWizard/LegalExemptions/HCKFilterUpdates.cab"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
如果不存在“%DTMBIN%\”(
回显错误:文件夹“%DTMBIN%”
echo不存在!请验证是否已安装控制器。
暂停
退出/B 1
)
设置“destination=C:\FilterUpdate.cab”
如果存在“%destination%”删除/q“%destination%”
echo请确保Studio的所有实例都已关闭!
正在创建下载任务。。。
设置“taskName=[HCK_FilterUpdater]”
>努尔(
rem删除任务(如果已存在)
bitsadmin/列表|查找“%taskName%”和&bitsadmin/取消“%taskName%”
rem创建任务
bitsadmin/创建“%taskName%”
rem在任务中包含我们的文件
bitsadmin/addfile“%taskName%”%source%”%destination%”
rem开始下载
bitsadmin/恢复“%taskName%”
)
回音下载。。。
设置“exitCode=”
对于(1500)中的/l%%a,如果没有为/f“delims=“%%a in”()定义exitCode,则不执行
bitsadmin/信息“%taskName%”
^|findstr/b/l/c:“{”
“)do for/f”标记=3,*”%%b in(“%%a”)do(
如果“%%~b”==“已转移”(
设置“exitCode=0”
>nul bitsadmin/完成“%taskName%”
回音…完成
)
如果“%%~b”==“错误”(
设置“exitCode=1”
bitsadmin/geterror“%taskName%”findstr/b/c:“错误”
>nul bitsadmin/取消“%taskName%”
)
如果未定义exitCode(
回声(%%b%%c
超时/t2>num
)
)
如果未定义退出代码(回显超时和退出/b 1)
如果不存在“%destination%”(回显错误并退出/b 1)
回声扩展。。。
>nul expand-i“%destination%”-f:UpdateFilters.sql“%DTMBIN%”
如果错误级别1(回显错误和退出/b 1)
回声期