18

ビルドプロセスの後に作成した.lib-fileを特定のフォルダにコピーする必要があります。 だから私は、プロジェクトの設定、ビルド後のイベントに行ってきましたし、次のコマンドを入力する:VS 2012:ポストビルドxcopyエラー2

:私は、「ビルド」をクリックして、私は次のエラーを受け取った後

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

しかし、その代わりのプロセスをコピーするには失敗しました

error MSB3073: The command "if exist 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" exited with code 2.

また、エラーメッセージ<のコマンド文字列に:VCEndについても疑問があります。これが理由でしょうか?これを解決するには?

すべてのヘルプやヒントは喜んで消費されることになります。)...

部分的な解決策:

EDITリネーム一部(z.libInc.lib)を作るように見えますxcopyがファイルかディレクトリかどうかを尋ねるときに、元の名前のファイルをディレクトリにコピーするときに動作します。名前を変更してコピーするのではなく

+1

あなたのプロジェクトファイルからPostBuildEventをコピーしてあなたの質問に貼り付けてください。編集しないで、まったく同じように見せてください。 –

+0

名前を変更せずにディレクトリにlib-fileをコピーすると、xcopyがファイルまたはディレクトリであるかどうかを確認するときに、名前を変更する部分(Inc.libからz.lib)が問題を起こすように見えます。 .. – Incubbus

+1

http://stackoverflow.com/a/4283533/532647これを解決するには1つの方法があります。 'echo f | xcopy ... 'あなたはxcopyに 'file'と言うだけです。 –

答えて

32

Xcopy documentationには、次の言う:行き先既存のディレクトリが含まれておらず、バックスラッシュ(\)で終わっていない場合は先がファイルまたはディレクトリ であるかどうかを指定

、次のメッセージが表示されます

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

ファイルをファイルにコピーする場合は、Fキーを押します。ファイルをディレクトリにコピーする場合は、Dキーを押します。

あなたは、ソースが複数のファイルまたはディレクトリであれば先がディレクトリであると仮定することxcopyの原因/ iのコマンドラインオプションを使用して、このメッセージを抑制することができます。

逆が必要ですが、そのようなスイッチはありません。

解決策はここに提案されています:https://stackoverflow.com/a/4283533/532647

基本的に以下のことを行いecho f |接頭辞、とxcopyコマンドを付加することが示唆された:それはxcopyが尋ねるfキーを押して、ユーザーをシミュレートします。

だからあなたのコマンドは次のようになります。xcopyコマンドにちょうどパイプecho f(== f)の出力を

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

オペレータ|、それが適切な場合に読み込まれます。出力のリダイレクトの詳細については、http://ss64.com/nt/syntax-redirection.htmlを参照してください。

UPDATE: はGovert points outように、このハックは、Windowsのローカライズされたバージョンでは動作しません。 はしかし、他のハックは動作します:

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

*は先がファイルまたはディレクトリであるかどうかを尋ねないXCOPYなりアスタリスクで先のファイル名を追加します。

+13

これは、プロンプトの単語が異なる可能性があるローカライズ版のWindowsでは機能しません。代わりに、宛先の末尾にアスタリスク「*」を追加すると、xcopyはファイル/ディレクトリを要求しません。 – Govert

+0

@Govert良い点、ありがとうございます。私はこれを答えに加えます。 –

+0

ファイル拡張子があり、アスタリスクがなぜ機能するのかというと、xcopyがソースおよび/またはターゲットをファイルとして認識しないのはなぜですか? @Govert – xr280xr

1

$(TargetPath)を引用符で囲んでみましたか?これまでに普及してきたスペース文字以外のMS製品は、すべてのコーナーで物事を混乱させる傾向があります...そのダンボがなぜそれを続けているのか...

Like so:if exist "$(TargetPath)"

9

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

+1

絶対に簡単な答えです。ありがとうございました。 – Lara

関連する問題