【问题标题】:Visual Studio Post Build Event if existsVisual Studio Post Build 事件(如果存在)
【发布时间】:2018-07-13 07:58:27
【问题描述】:

我想在 Visual Studio 的后期构建步骤中调用一个批处理文件。本地有批处理文件,只是命令

call "$(SolutionDir)PostBuildSen.bat" "$(TargetDir)" "$(TargetName)"

正确调用并执行批处理文件。

但是,当我想先检查批处理文件是否存在时(因为其他人将使用相同的 Post Build Event),我得到了错误

:VCEnd" 以代码 255 退出。

命令是

if exists "$(SolutionDir)PostBuildSen.bat" call "$(SolutionDir)PostBuildSen.bat" "$(TargetDir)" "$(TargetName)"

诊断输出告诉我

2> 完成执行任务“Exec”——失败。

你是怎么处理的?

解决方案目录包含一个带下划线的文件夹,即\Dev_Main\,我已经阅读了至少要调用的批处理文件不起作用的文件夹。但是我不确定这是否也是文件夹的问题以及如何处理它。另外,由于call 命令有效,我不确定这是不是问题所在。

此外,如果我将 call 替换为 cmd /C,则退出代码为 1,并且(最小)输出告诉我

1>文件名、目录名或卷标语法不正确。

另外,我稍后会将它作为自定义命令添加到 CMakeLists 文件中,因此解决方案需要使用它。

【问题讨论】:

  • 在输出窗口中应该有一个可见的诊断,由命令处理器在它倾斜时产生。应该看起来像“c:\foo\bar\PostBuildSen.bat 在这个时候出乎意料”。你的语法有点错误,它是if exist 而不是if exists
  • 谢谢,确实解决了这个问题。如果您发布答案,我会接受。
  • 嗯,这只是一个错字。我不明白为什么您没有看到诊断结果如此难以发布权威答案。随意使用您学到的知识来完成问答。
  • 我在诊断输出中没有看到任何真正让我看到它只是语法错误的东西。我当然可能错过了一些东西,但我真正读到的唯一内容是“这不起作用”。那我就关了。

标签: visual-studio post-build-event


【解决方案1】:

感谢 Hans Passant 的评论,我解决了这个问题。文件查询需要if exist 而不是if exists

【讨论】:

  • 值得指出的是,您也可以做相反的事情:IF NOT EXIST...
猜你喜欢
  • 1970-01-01
  • 2011-08-24
  • 2011-02-11
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 2021-03-13
  • 2020-06-04
  • 1970-01-01
相关资源
最近更新 更多