使用BATCH文件安装软件(我已经工作),然后创建一个快捷方式文件

时间:2017-02-14 19:28:26

标签: batch-file

这是我到目前为止所做的:

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

现在,它安装正确,但不创建快捷方式。我尝试了很多不同的开关,引号和语句组合。我似乎无法让它工作。我非常感谢任何帮助,因为我确信这只是我忽略的事情。提前谢谢!

3 个答案:

答案 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 1pushd失败时退出批处理文件,例如无法找到路径时;最后popd最后恢复上一个工作目录;
  • 反转if查询,因为如果条件,则需要发生某些事情;这也避免了goto的需要;此外,从不定义标签:EOF,因为这是一个保留名称(请参阅:goto);认为你的if/else语法错了!
  • environment variables用于系统路径,例如%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

希望这有助于某些人在将来尝试做同样的事情!