VS2019中$(WindowsSDK_ExecutablePath_x64)含多路径如何提取非.NET首条路径
实现方案
方法1:使用批处理分割宏值(无需修改其他配置)
生成后事件本质运行的是CMD脚本,可以直接用for命令分割分号分隔的宏值,提取第一个非.NET路径:
:: 遍历分割宏值,取第一个路径执行复制后直接退出循环 for /f "delims=;" %%i in ("$(WindowsSDK_ExecutablePath_x64)") do ( copy /Y "%%i\file.ext" 你的目标路径 goto endCopy ) :endCopy
说明:
- 生成后事件中批处理变量需要用双百分号
%%i,如果是直接在CMD窗口测试请改为单百分号%i delims=;指定用分号作为分隔符拆分宏的取值,第一段即为Windows SDK原生工具路径,不会匹配到后面的.NET工具路径- 加
goto endCopy是为了只取第一个路径执行操作,避免遍历所有路径重复执行复制
方法2:使用更精准的单路径SDK宏(推荐)
VS2019提供了单独指向Windows SDK x64工具目录的宏$(WindowsKit10BinPath_x64),该宏本身就是单一路径,不会附带.NET工具路径,无需做任何字符串处理,直接替换原有宏即可:
copy /Y "$(WindowsKit10BinPath_x64)\file.ext" 你的目标路径
该宏会自动匹配你当前项目配置的Windows SDK版本,更新SDK版本时也无需手动修改配置。
注意事项
- 所有路径两侧必须加英文双引号,避免路径中空格导致命令识别失败
- 原
$(WindowsSDK_ExecutablePath_x64)的取值已经包含bin层级,拼接子路径时不要重复写\bin,避免出现路径不存在的错误
内容的提问来源于stack exchange,提问作者rashmatash
相关产品推荐
相关产品推荐

