XCOPY切换到创build指定的目录如果不存在?
我在后生成事件中使用XCOPY将编译的DLL从其输出文件夹复制到主应用程序的输出文件夹。 DLL正被复制到主应用程序输出文件夹中的“模块”子文件夹中,如下所示:
xcopy "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\"
如果Modules文件夹存在,该命令可以正常工作,但是在testing过程中我发现如果该文件夹不存在,XCOPY不会创build它,并且命令失败。
是否有一个XCOPY开关,将导致文件夹被创build,如果它不存在? 如果没有,我会添加到我的后生成事件来创build文件夹,如果它不存在? 谢谢你的帮助。
我试图在命令行上使用
D:\>xcopy myfile.dat xcopytest\test\
目标目录已经正确创build。
如果不是的话,你可以使用mkdir
命令来创build目标目录,并启用cmd
的命令扩展
cmd /x /c mkdir "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\"
('/ x'启用命令扩展,以防系统默认启用,我不熟悉cmd
)
使用
cmd /? mkdir /? xcopy /?
了解更多信息 :)
回答使用“/我”正在工作,但有一点小把戏 – 在目标你必须以字符\告诉xcopy目标是目录,而不是文件!
例:
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder" /F /R /Y /I
不起作用并返回代码2,但这一个:
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder\" /F /R /Y /I
我的示例中使用的命令行参数:
/ F – 显示完整的源文件名和目标文件名
/ R – 这将覆盖只读文件
/ Y – 禁止提示覆盖现有文件(s)
/我 – 假设目的地是目录(但必须以\结尾)
我讨厌PostBuild步骤,它允许在构build工具的权限之外发生太多的事情。 我相信最好让MSBuildpipe理复制过程,并进行更新。 您可以像这样编辑.csproj文件:
<Target Name="AfterBuild" Inputs="$(TargetPath)\**"> <Copy SourceFiles="$(TargetPath)\**" DestinationFiles="$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\**" OverwriteReadOnlyFiles="true"></Copy> </Target>
将/ i与xcopy一起使用,如果目录不存在,它将为您创build目录。
你可以使用robocopy:
robocopy "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules" /E
尝试/ E
要获得完整的选项列表:xcopy /?