gpt4 book ai didi

visual-studio-2010 - Visual Studio Post-Build 事件调用带有空格的参数的批处理文件

转载 作者:行者123 更新时间:2023-12-05 01:37:00 24 4
gpt4 key购买 nike

有人知道怎么做吗?

我有一个 .bat 脚本,我希望能够从命令行以及 Visual Studio 中的构建后脚本使用它。

该脚本采用参数,其中一些可以包含空格。

.bat 脚本的路径可以包含空格,最好表示为相对于 $(SolutionDir) 的路径。

我已经尝试过似乎有一百种命令行变体,它们具有不同的封闭引号和转义字符组合,包括:

"$(SolutionDir)myScript.bat" "$(SolutionDir)\" "$(Platform)" "$(Configuration)"

call "$(SolutionDir)myScript.bat" "$(SolutionDir)" "$(Platform)" "$(Configuration)"

cmd /c ""$(SolutionDir)myScript.bat" "$(SolutionDir)" "$(Platform)" "$(Configuration)""

但是它们都会产生错误,我找不到有效的组合,而是通常会收到此错误:
"[path-to-script] is not recognized as an internal
or external command, operable program or batch file"

从构建后步骤调用它的正确语法是什么?

我在将其设置为外部工具时也遇到了类似的问题,因此非常感谢您提供任何帮助!

最佳答案

感谢pilotcam 和James K 在评论中为我指明了正确的方向,我遇到的互操作问题在我试图从 VS2010 调用的批处理脚本中是一个相对简单的问题。

从命令行调用时,我总是传入不需要引号的相对路径。当从 VS2010 调用时,我指定了基于 VS 对 $(SolutionDir) 和其他带有引号的宏的扩展的完整路径。

当批处理脚本处理这些参数时,它并没有考虑到引号字符可能作为参数的一部分出现的事实。所以,它做的第一件事就是检查像这样的空参数:

if "%1"=="" goto usage

第一行是从 VS 调用时令人窒息的内容,如下所示:
"$(SolutionDir)myScript.bat" "$(SolutionDir)"

... if 语句被阻塞,因为包含的引号被转换为 %1 的值。当参数周围没有引号时以及 VS2010 中的命令行使用时,正确的修复方法是将引号从 %1 中删除,如下所示:
if "%~1"=="" goto usage

......在解决这个问题后,其余的工作就很好了。可能是批处理脚本 101,因此您可以知道我编写 Windows 批处理脚本的频率。

关于visual-studio-2010 - Visual Studio Post-Build 事件调用带有空格的参数的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com