Inc*_*bus 18 msbuild xcopy post-build-event visual-studio visual-studio-2012
我想让VS将构建过程后创建的.lib文件复制到特定文件夹.所以我去了项目配置,后期构建事件,并输入以下命令:
if exist $(TargetPath)
xcopy "$(TargetPath)" "C:\Users\Incubbus\Documents\Visual Studio 2010\My Libraries\z.lib" /Y
Run Code Online (Sandbox Code Playgroud)
但是,在点击"构建"后,我没有收到复制过程,而是收到以下错误:
错误MSB3073:命令"如果存在C:\ Users\Incubbus\Documents\Visual Studio 2010\My Libraries\MyNetWorkProject\Debug\IncNetworkLibD.lib xcopy"C:\ Users\Incubbus\Documents\Visual Studio 2010\My Libraries\MyNetWorkProject\Debug\IncNetworkLibD.lib""C:\ Users\Incubbus\Documents\Visual Studio 2010\My Libraries\z.lib"/ Y
:VCEnd"退出代码2.
我也想知道:VCEnd
错误信息的命令字符串< - 也许这就是原因?如何解决这个问题?
任何帮助和提示都会被愉快地消耗掉:)
部分解决方案
编辑:当xcopy询问这是一个文件还是一个目录时,它看起来像重命名部分(Inc.lib
to z.lib
)造成麻烦...当我只是将原来命名的文件复制到一个目录而不是复制重命名时,它可以正常工作
Iar*_*ica 35
Xcopy文档说明如下:
指定Destination是文件还是目录如果Destination不包含现有目录且不以反斜杠(\)结尾,则会显示以下消息:
Does destination specify a file name
or directory name on the target
(F = file, D = directory)?
Run Code Online (Sandbox Code Playgroud)
如果要将文件复制到文件,请按F. 如果要将文件或文件复制到目录,请按D.
您可以使用/ i命令行选项来抑制此消息,xcopy
如果源是多个文件或目录,则会导致假定目标是目录.
你需要相反,但没有这样的开关.
这里提出了解决方案:https://stackoverflow.com/a/4283533/532647.
建议在xcopy
命令前加上echo f |
前缀,它基本上执行以下操作:它模拟用户f
在xcopy
请求时按键.
所以你的命令应该是这样的:
if exist $(TargetPath)
echo f | xcopy "$(TargetPath)" "C:\Users\Incubbus\Documents\Visual Studio 2010\My Libraries\z.lib" /Y
Run Code Online (Sandbox Code Playgroud)
运算符|
只是将echo f
(== f
)的输出传递给xcopy
命令,并在适当时读取它.有关输出重定向的更多信息,请访问:http://ss64.com/nt/syntax-redirection.html.
更新: 正如Govert所指出的,这种黑客攻击不适用于Windows的本地化版本.但是,另一个黑客将工作:
xcopy D:\file.zip c:\renamedFile.zip*
Run Code Online (Sandbox Code Playgroud)
使用星号附加目标文件名*
使xcopy无法询问目标是文件还是目录.
归档时间: |
|
查看次数: |
38701 次 |
最近记录: |