【问题标题】:srvany.exe does not start .bat filesrvany.exe 不启动 .bat 文件
【发布时间】:2013-12-14 16:26:21
【问题描述】:

(操作系统:Windows 7)

我使用 SC.EXE 创建了一个 Windows 服务。此外,我创建了必要的注册表项来指定应用程序路径(使用关键参数)。

“应用程序”是一个 .BAT 文件,它设置多个环境变量,然后调用 Python 脚本。直接从 CMD 中运行 .BAT 文件时,我会得到正常的所需行为。

使用服务管理器我可以启动和停止服务(也适用于直接从 CMD 发出的 SC.EXE)。一切正常,没有警告或错误或任何其他可见(在事件日志中)。

BAT 文件未执行。我再次检查了应用程序路径,再次检查了服务名称。

  • 更正:实际执行 BAT 文件(从 BAT 文件中创建简单的日志文件)。显然,不起作用的是将 python.exe 作为 BAT 文件中的最后一个命令执行。我无法验证 python.exe 生成了什么错误,因为我没有看到任何日志文件、事件日志条目...

BAT文件内容:

@ECHO OFF
REM ==========================================================================
REM    ProcessIntergrationBridge Microsoft Windows Service Shell Script
REM ==========================================================================
SET CONSEQUOR_PIB_HOME=C:\opt\consequor\pib
SET CONSEQUOR_PIB_VERSION_DESIGNATOR=pib_b0100
SET CONSEQUOR_PIB_DATA=C:\var\opt\consequor\pib
SET CONSEQUOR_PIB_LOG=C:\var\opt\consequor\pib\log
SET CONSEQUOR_PIB_LOG_FILE=C:\var\opt\consequor\pib\log\pib.log
SET PYTHONPATH=C:\opt\consequor\pib\%CONSEQUOR_PIB_VERSION_DESIGNATOR%
SET PYTHONHOME=C:\opt\consequor\pib\python-runtime\win
SET PATH=%CONSEQUOR_PIB_HOME%\%CONSEQUOR_PIB_VERSION_DESIGNATOR%\bin;%CONSEQUOR_PIB_HOME%\python-runtime\win;CONSEQUOR_PIB_HOME%\python-runtime\win\DLLs;CONSEQUOR_PIB_HOME%\python-runtime\win\libs;CONSEQUOR_PIB_HOME%\python-runtime\win\Lib;%PATH%
SET CMD=%PYTHONHOME%\pythonw.exe %CONSEQUOR_PIB_HOME%\%CONSEQUOR_PIB_VERSION_DESIGNATOR%\%CONSEQUOR_PIB_VERSION_DESIGNATOR%\start_pib\pib_run_server.py debug
%CMD%

PIBD 服务注册条目:(哦 Merde Alors - 我还不能发布图片... - 如果有人想查看,我可以通过直接电子邮件发送...)

PIBD Registry Entry

PIBD Parameters Setting

感谢您提供有关如何调试、修复、更改它的任何提示 - 您知道。

亲切的问候

Frank - 花了几天时间试图了解 Windows 的奥秘。

【问题讨论】:

    标签: windows batch-file cmd srvany


    【解决方案1】:

    您应该确保实际调用 cmd.exe 时将批处理文件作为参数,而不是仅仅调用批处理文件。

    类似的东西:

    C:\Windows\System32\cmd.exe /C C:\opt\consequor\pib\yourbatch.bat
    

    【讨论】:

    • 根据您的建议,我将“应用程序”的注册表项更改为 C:\Windows\System32\cmd.exe /C C:\opt\consequor\pib\pib_b0100\pibsvc.bat 。不幸的是,行为没有改变。 srvany.exe 已启动,但底层 python.exe(从 BAT 文件调用)未启动。
    【解决方案2】:

    我推荐这种方法:

    1. 以系统用户身份启动command prompt in Session 0
    2. 切换到会话 0(从交互式服务检测对话框或 from the command line)以查找命令提示符
    3. 从命令行运行批处理文件,看看它报告了什么错误

    但是查看“SET PATH=”行,我发现某些变量没有正确表达(CONSEQUOR_PIB_HOME 和其他变量上缺少前导 %),这可能是问题...

    【讨论】:

    • 谢谢 - 成功了!会话 0 切换解决了这个问题。
    猜你喜欢
    • 2023-04-10
    • 2014-02-28
    • 1970-01-01
    • 2023-01-07
    • 2013-04-10
    • 2021-12-11
    • 2017-01-03
    • 2014-10-01
    • 2011-07-11
    相关资源
    最近更新 更多