【问题标题】:Keep getting error level to 9009不断将错误级别提高到 9009
【发布时间】:2014-06-03 08:50:37
【问题描述】:

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

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

有没有人知道为什么我会经常收到这个错误?

谢谢

米高扬

【问题讨论】:

    标签: batch-file errorlevel


    【解决方案1】:

    【讨论】:

    • 这里不是问题。 ERRORLEVEL 是在进入 IF 块之前设置的,因此不需要延迟扩展。
    【解决方案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 路径(出于“安全”原因)。

    也可以试试pushdpopd,因为@dbenham 不断提醒我们:LINK

    【讨论】:

    • 谢谢我更改了脚本,但它仍然放置了一个成功的文件(EQU 0),但仍然是一个带有 9009 的错误文件
    • @Mikoyan - 此外,ELSE 必须与前一个右括号位于同一行。阅读文档。在命令提示符下输入help ifif /?
    【解决方案3】:

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

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

    【讨论】:

    • 您能否详细解释一下,为什么删除 ELSE 对您有帮助?
    • 嗨,莉雅,当我查看脚本时,它说语法无效:else if %ErrorLevel% NEQ 0。然后我删除了 if %errorlevel% NEQ 0 并添加了 else (>>"\\ servername\gpolog$\BoxSyncErrorsx86.csv" echo %computername%,%date% - %time%,%ErrorLevel%,"Error trying to install/upgrade to BoxSync4.0x86" ) :eof
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多