0

我有一个在 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 连接是在命令窗口显示“命令成功完成”时建立的。然后,当它到达执行应用程序的行时,我收到一条弹出消息“程序的位置无效!”。

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

4

1 回答 1

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 可能期望的不仅仅是基于驱动器号的路径,可能是某个地方的特定目录结构或注册表项等 - 换句话说,它可能不够便携,无法简单地运行小路。

于 2015-12-08T00:46:01.157 回答