有一个奇怪的问题,首先是使用批处理文件来安装应用程序..安装工作正常,没有任何问题。
如果错误级别为NEQ 0,我在批处理结束时将错误代码输出到文件,但输出始终为9009.
从网上搜索9009,它说无法找到可执行文件,但肯定可以在应用程序安装正常时使用。
以下是我要安装的一个批处理脚本的示例:
IF exist %windir%\LogFolder\BoxSync4.0x86.txt ( goto eof ) ELSE ( goto BoxSyncInstall )
:BoxSyncInstall
msiexec /i "\\servername\InstallFolder\BoxSync\SyncMSI32.msi" /qn
if %ErrorLevel% EQU 0 (
>>"\\servername\gpolog\BoxSync4.0x86.csv" echo "%computername%","%date%","%Time%","%ErrorLevel%","Box Sync 4.0 x86 Installed"
>>"%windir%\gpologs\BoxSync4.0x86.txt" echo "Box Sync 4.0 x86 Installed"
)
else if %ErrorLevel% NEQ 0(
>>"\\servername\gpolog\BoxSyncErrorsx86.csv" echo "%computername%","%date%","%Time%","%ErrorLevel%","Error trying to install/upgrade to BoxSync4.0x86"
)
:eof
有没有人有任何想法为什么我可能会不断收到此错误?
由于
米高扬
答案 0 :(得分:2)
尝试在批处理文件开头使用setlocal enabledelayedexpansion
,在!ERRORLEVEL!
内使用IF
。
另见:
答案 1 :(得分:2)
问题是语法问题,您需要在0
和(
之间留出空格,如下所示:
IF exist %windir%\LogFolder\BoxSync4.0x86.txt ( goto eof ) ELSE ( goto BoxSyncInstall )
:BoxSyncInstall
msiexec /i "\\servername\InstallFolder\BoxSync\SyncMSI32.msi" /qn
if %ErrorLevel% EQU 0 (
>>"\\servername\gpolog\BoxSync4.0x86.csv" echo "%computername%","%date%","%Time%","%ErrorLevel%","Box Sync 4.0 x86 Installed"
>>"%windir%\gpologs\BoxSync4.0x86.txt" echo "Box Sync 4.0 x86 Installed"
)
else if %ErrorLevel% NEQ 0 (
>>"\\servername\gpolog\BoxSyncErrorsx86.csv" echo "%computername%","%date%","%Time%","%ErrorLevel%","Error trying to install/upgrade to BoxSync4.0x86"
)
:eof
编辑:如果安装程序需要管理员权限且这是Win8 +操作系统,则可能存在安全限制,在这种情况下,请将msi安装程序复制到%TEMP%
文件夹并运行它从那里。发生这种情况的原因是,当您在管理员模式下运行命令提示符时,它会限制使用unc路径(出于“安全”原因)。
另请尝试pushd
和popd
,因为@dbenham不断提醒我们:LINK
答案 2 :(得分:1)
发现问题所在,它位于ELSE IF之下,因为我看到安装脚本运行时没有沉默。
删除ELSE后,脚本运行正常。再次感谢您的帮助,因为您引导我使用其他技巧。