【发布时间】:2012-09-27 16:58:48
【问题描述】:
有人知道怎么做吗?
我有一个 .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"
从构建后步骤调用它的正确语法是什么?
我在将其设置为外部工具时也遇到了类似的问题,因此非常感谢您提供任何帮助!
【问题讨论】:
-
您引用的错误听起来像是批处理文件中未执行的特定命令。
-
我认为批处理脚本很好 - 我可以从命令行运行它而不会出现问题。当我尝试通过在脚本名称前面加上 $(SolutionDir) 路径以及其他参数来运行它时,我遇到了这个问题。在命令行上尝试它,我得到了类似的错误,所以它一定是用引号引起的,这一切都搞砸了。我就是找不到合适的组合!
-
您是否从与 Visual Studio 使用的工作目录相同的工作目录运行批处理文件?您可以对批处理文件使用“cd”命令来查看它从哪个目录运行,然后尝试从命令行复制。和/或添加类似“echo %0 x %1 x %2 x %3”的内容来诊断 VS 是如何调用它的。
-
在命令行上,我一直在尝试指定批处理脚本的完整路径,以及 $(SolutionDir) 的完整路径,将内容括在引号中,即使从命令行。如果您与脚本不在同一目录中,您不能只指定脚本的完整路径,用引号括起来,作为命令行上的第一个元素,然后是批处理脚本的参数也包含在引号?
-
在命令行上,我使用的是:"
" " " Win32 Debug
标签: visual-studio-2010 batch-file command-line-arguments post-build-event