【问题标题】:Windows batch file to connect to share and execute app用于连接共享和执行应用程序的 Windows 批处理文件
【发布时间】:2015-12-07 23:39:10
【问题描述】:

我有一个在 Windows 7 x86 上运行的批处理文件。我正在尝试编写与共享的连接脚本,然后在完成后执行应用程序。

net use \\appserver001\mycompany.ptshare\OPS /user:geek xyz!@# /persistent:yes
echo %errorlevel%
if errorlevel 2 goto message
if errorlevel 1 goto message

start "" "\\appserver001\mycompany.ptshare\OPS\OPSapp.exe"
echo %errorlevel%
if errorlevel 2 goto message
if errorlevel 1 goto message

goto end

:message
cls
echo ERROR IN CONNECTING TO SERVER

:end

当命令窗口显示“命令已成功完成”时,已建立 NET USE 连接。然后,当它到达执行应用程序的行时,我收到一条弹出消息“程序的位置无效!”。

我发誓我以前做过他的,但不知道为什么它不能运行我的应用程序。

【问题讨论】:

    标签: windows batch-file execute net-use


    【解决方案1】:

    "Invalid location for program!" 听起来像是来自OPSapp.exe 本身的错误消息。您可以通过打开任务管理器并在弹出错误时检查 OPSapp 是否列在“进程”选项卡中来验证这一点。如果不是这种情况,那么您可以忽略这篇文章的其余部分。

    某些程序需要从基于驱动器号的路径(例如 X:\etc\app.exe)而不是 UNC 路径(例如 \\srv\etc\app.exe)启动。这样的程序可以在启动时检查它的启动位置,然后如果它是 UNC 路径而不是它所期望的基于驱动器号的路径,则会弹出一条错误消息并退出。

    在这种情况下,解决方法是(临时)将驱动器号映射到网络共享,然后使用它来启动程序。例如,在您的情况下替换

    start "" "\\appserver001\mycompany.ptshare\OPS\OPSapp.exe"
    

    pushd "\\appserver001\mycompany.ptshare\OPS"
    start "" "OPSapp.exe"
    

    如果这仍然不起作用,那么 OPSapp 可能期望的不仅仅是基于驱动器号的路径,可能是某个地方的特定目录结构或注册表项等 - 换句话说,它可能不够 portable可以简单地通过路径运行。

    【讨论】:

    • 你可能是对的。我会检查源代码,因为它是我部门编写的应用程序。奇怪的是,如果我将 /D 开关设置为给它起始路径,它就可以工作。一旦我发现更多信息,我会报告。
    • 这是应用程序本身。开发人员正在寻找它从哪里运行。由于它没有起始目录,因此假定它是他不想要的 sys 驱动器或 C:\。在sctipt中添加起始目录后,一切正常。
    猜你喜欢
    • 1970-01-01
    • 2012-07-28
    • 2015-11-06
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多