1

有一个奇怪的问题,首先是使用批处理文件来安装应用程序。安装工作正常,没有任何问题。

如果错误级别为 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

有谁知道为什么我可能会不断收到这个错误?

谢谢

米高扬

4

3 回答 3

2

尝试在setlocal enabledelayedexpansion批处理文件的开头和.!ERRORLEVEL!IF

也可以看看:

于 2014-06-03T08:56:27.803 回答
2

问题出在语法上,你的0and之间需要一个空格(,如下所示:

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 路径(出于“安全”原因)。

也尝试一下pushdpopd正如@dbenham 不断提醒我们的那样:LINK

于 2014-06-03T08:57:39.713 回答
1

发现问题出在 ELSE IF 下,因为我看着安装脚本运行时没有保持沉默。

删除 ELSE 后,脚本运行良好。再次感谢您的帮助,因为您用其他技巧指导了我。

于 2014-06-03T10:17:31.027 回答