web-dev-qa-db-ja.com

VS 2012:ビルド後のxcopyエラー2

ビルドプロセス後に作成した.lib-fileを特定のフォルダーにVSにコピーしたい。そこで、プロジェクトの構成、ビルド後のイベントに移動し、次のコマンドを入力しました。

if exist $(TargetPath)
xcopy "$(TargetPath)" "C:\Users\Incubbus\Documents\Visual Studio 2010\My Libraries\z.lib" /Y

しかし、「ビルド」をクリックした後、プロセスをコピーする代わりに失敗し、次のエラーが表示されます。

エラー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についても疑問に思っています<-多分これが理由ですか?これを解決する方法は?

ヘルプやヒントは喜んで消費されます:)...

部分的な解決策:

[〜#〜] edit [〜#〜]:--copyのように見える名前の変更パート(Inc.libからz.lib)は、xcopyこれがファイルなのかディレクトリなのかを尋ねる...名前を変更してコピーするのではなく、最初に名前を付けたファイルをディレクトリにコピーするだけで機能します

18
Incubbus

Xcopyドキュメント は次のように述べています。

Destinationがファイルまたはディレクトリのどちらであるかを指定するDestinationに既存のディレクトリがなく、バックスラッシュ(\)で終わっていない場合、次のメッセージが表示されます:

Does destination specify a file name 
or directory name on the target 
(F = file, D = directory)? 

1つまたは複数のファイルをファイルにコピーする場合は、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

演算子|は、echo f(== f)の出力をxcopyコマンドにパイプ処理するだけで、適切なときに読み取られます。ここでの出力リダイレクトに関する詳細情報: http://ss64.com/nt/syntax-redirection.html

UPDATE:Govert 指摘 のように、このハックはローカライズ版のWindowsでは機能しません。ただし、別のハックが機能します。

xcopy D:\file.Zip c:\renamedFile.Zip*

アスタリスク*が付いた宛先ファイル名を追加すると、xcopyは宛先がファイルであるかディレクトリであるかを尋ねません。

34

Xcopyの代わりにcopyを使用しないのはなぜですか?コピーは特にファイル用なので、混乱はありません。

9
user3285954

$(TargetPath)を引用符で囲みましたか?すべてのMS製品のアンダースコアではなく人気のあるスペース文字が、あらゆる場所で物事を台無しにする傾向があります。

のように:存在する場合 "$(TargetPath)"

1
Csimbi