后构建事件创建目录

34

我试图在Visual Studio的PostBuildEvent中使用以下命令行创建一个名为Design的文件夹,该文件夹位于构建输出文件夹中。

mkdir $(TargetDir)Design  ....Runs Successfully but folder is not created
mkdir "$(TargetDir)Design" ....Runs Successfully but folder is not created
MD $(TargetDir)Design  ....Runs Successfully but folder is not created
MD "$(TargetDir)Design"  ....Runs Successfully but folder is not created

有没有人能告诉我我做错了什么?


你的 TargetDir 的值是多少? - Tung
这是输出保存在构建服务器上的相对路径,例如 \build\Sol Build\Build_1120943.7。 - Deepak
你的语法看起来不错。你可以尝试在mkdir命令之后添加一个echo语句作为一种健全性检查,以确保计算出的路径与你想要的路径相符。 - Tung
当你说“成功运行”时,你是什么意思?我的意思是,编译器可以运行并且编译正确,但是你如何证明后构建事件已经运行?你是否在“运行后构建事件”组合框上设置了“始终运行”? - Steve
我已经成功地构建并运行了它。postbuildevent 正在运行,因为有其他命令行删除了一些文件并重命名了一些文件夹。但问题是创建一个新文件夹。 - Deepak
3个回答

53
您需要进行类似以下的操作:

if not exist DirToCreate mkdir DirToCreate

2
如果可能,请尝试用一些解释等详细说明您的答案。 - Yohanes Khosiawan 许先汉
1
这是一个示例,您可以在项目设置中的“后生成事件”对话框中输入。将DirToCreate替换为您选择的目录。 - Eric

25

这对我很有用(其中Design是您想创建的文件夹):

mkdir $(TargetDir)\Design

如果你想先检查是否存在:

if not exist $(TargetDir)\Design mkdir $(TargetDir)\Design

9
目录路径应如下用双引号括起来:if not exist "$(TargetDir)\Design" mkdir "$(TargetDir)\Design" - Bala Sakthis

5
除了之前的两个答案,您还可以使用这样的变量:

除了之前的两个答案,您可以像这样使用变量:

SET path=$(TargetDir)\Design
if not exist "%path%" mkdir "%path%"

这样,您就可以避免重复。 (在VS2019中测试过)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接