这是我到目前为止所做的:
IF EXIST "C:\Program Files (x86)\Yawcam\Yawcam.exe" GOTO :eof
ELSE
start \\hazel\software$\YawCam\v6.0\yawcam_install.exe /SP- /VERYSILENT
xcopy "\\hazel\software$\YawCam\Doc Cam.lnk" "C:\users\public\desktop\Doc Cam.lnk" /C /Y
:eof
pause
EXIT
现在,它安装正确,但不创建快捷方式。我尝试了很多不同的开关,引号和语句组合。我似乎无法让它工作。我非常感谢任何帮助,因为我确信这只是我忽略的事情。提前谢谢!
答案 0 :(得分:0)
以下重写需要运行As administrator
。
If Exist "%ProgramFiles(x86)%\Yawcam\Yawcam.exe" GoTo :EOF
"\\hazel\software$\YawCam\v6.0\yawcam_install.exe" /SP- /VERYSILENT
XCopy "%~dp0Doc Cam.lnk" "%PUBLIC%\Desktop" /C /Y
Pause
答案 1 :(得分:0)
我会这样写:
pushd "\\hazel\software$" || exit /B 1
if not exist "%ProgramFiles(x86)%\Yawcam\Yawcam.exe" (
".\YawCam\v6.0\yawcam_install.exe" /SP- /VERYSILENT
)
copy /Y ".\YawCam\Doc Cam.lnk" "%PUBLIC%\Desktop\Doc Cam.lnk"
popd
exit /B
我做了什么,为什么:
pushd
来解析UNC路径\\hazel\software$
,因为某些命令可能会遇到问题; ||
表示在发生故障时执行下一个命令,exit /B 1
在pushd
失败时退出批处理文件,例如无法找到路径时;最后popd
最后恢复上一个工作目录; if
查询,因为如果条件不,则需要发生某些事情;这也避免了goto
的需要;此外,从不定义标签:EOF
,因为这是一个保留名称(请参阅:goto
);认为你的if
/else
语法错了!%ProgramFiles(x86)%
和%PUBLIC%
,因为某些系统上的目录位置可能不同; start
命令,因为通常不需要运行外部(控制台)程序; (如果由于某种原因,此应用程序需要 ,您可能希望将语法更改为:start "" /WAIT ".\YawCam\v6.0\yawcam_install.exe" /SP- /VERYSILENT
)xcopy
替换为copy
,因为您只复制一个文件,以便不必处理F = file, D = directory
提示; /B
添加到exit
以便终止批处理文件,但不终止托管命令提示符(cmd
)实例; 答案 2 :(得分:-1)
我不确定这种方法是否一定是最好的方式,但它能满足我们的需求!我感谢你们所有人的帮助!我们看了每个评论/答案,然后从那里开始。谢谢!
以下是我们最终所做的事情:
IF EXIST "C:\Program Files (x86)\Yawcam\Yawcam.exe" GOTO eof
ELSE
start \\hazel\software$\YawCam\v6.0\yawcam_install.exe /SP- /VERYSILENT
:eof
Echo F|xcopy "\\hazel\software$\YawCam\Doc Cam.lnk" "C:\users\public\desktop\Doc Cam.lnk" /C /Y
EXIT
希望这有助于某些人在将来尝试做同样的事情!