SCCM部署bat脚本运行提示找不到同目录exe文件的解决方法
问题原因
本地手动执行bat脚本时,系统默认将脚本所在文件夹设为当前工作目录,直接写相对路径VooVMeeting.exe可以正常命中文件。但SCCM通过Software Center调用脚本时,默认工作目录是系统路径C:\Windows\System32(32位调用时为C:\Windows\SysWOW64),不会自动切换到SCCM本地缓存的安装包所在目录,因此相对路径无法定位到同级的exe文件。
修复方法
核心逻辑是显式指定exe的绝对路径,或者提前将工作目录切换到bat脚本自身所在的目录。bat内置变量%~dp0可以直接获取当前脚本所在目录的完整绝对路径(自带末尾反斜杠),不受调用时工作目录的影响。
- 改动最小的方式:直接在调用exe时拼接
%~dp0补全绝对路径 - 适合多文件场景的方式:脚本开头执行目录切换,后续所有相对路径默认基于脚本所在目录生效
修正后可直接用的脚本
注意start命令后要加一个空引号占位:start语法会将第一个被引号包裹的参数识别为新窗口标题,不加空引号会出现路径被误判为标题、程序不启动的问题,这是bat脚本的常见坑。
@echo off REM 切换当前工作目录到bat自身所在目录,/d参数支持跨盘符切换 cd /d "%~dp0" REM 静默安装腾讯会议,空引号作为窗口标题占位 start "" "VooVMeeting.exe" /S REM 创建桌面快捷方式 set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs" echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT% echo sLinkFile = "C:\Users\%USERNAME%\Desktop\VooV Meeting.lnk" >> %SCRIPT% echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT% echo oLink.TargetPath = "C:\Program Files (x86)\Tencent\VooVMeeting\voovmeetingapp_new.exe" >> %SCRIPT% echo oLink.Save >> %SCRIPT% cscript /nologo %SCRIPT% del %SCRIPT% REM 等待30秒确保安装完成 timeout /t 30 /nobreak>NUL REM 返回成功退出码 EXIT /B 0
SCCM侧配套检查点
- 确认SCCM应用包源目录中,
VooVMeeting.exe和bat脚本放在同一级,更新分发点时所有安装文件都已同步,不要只上传脚本漏传安装包 - 如果部署时选择了「无论用户是否登录都安装」(即System上下文安装),原脚本里用
%USERNAME%创建桌面快捷方式的逻辑会失效:System上下文下该变量指向SYSTEM账户的用户目录,不会在实际登录用户的桌面生成快捷方式,需要单独调整获取用户桌面路径的逻辑 - 如果部署的是64位应用,可以在SCCM程序属性页勾选「禁用64位文件系统重定向」,避免32位客户端代理调用时路径被重定向到SysWOW64引发异常
内容的提问来源于stack exchange,提问作者ImposterSyndrome137
相关产品推荐
相关产品推荐

