我有一个在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连接是在命令窗口显示"命令成功完成"。然后,当它到达执行应用程序的行时,我会收到一条弹出消息"程序的位置无效!"。
我发誓我以前做过他但是无法弄清楚为什么它不会运行我的应用程序。
答案 0 :(得分: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可能需要的不仅仅是基于驱动器号的路径,可能是某个特定的目录结构,还是注册表项等 - 换句话说它可能不是{{3}足够简单地通过路径运行。