20

ビルドプロセス後に作成した.libファイルを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エラーメッセージのコマンド文字列の中にも疑問があります<-これが理由かもしれませんか?これを解決するにはどうすればよいですか?

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

部分的な解決策:

編集:xcopyがこれがファイルかディレクトリかを尋ねるとき、名前の変更部分(Inc.libto z.lib)が問題になるようです...名前を変更したファイルをコピーするのではなく、元の名前のファイルをディレクトリにコピーするだけで機能します

4

3 に答える 3

38

Xcopyのドキュメントには次のように書かれています。

Destinationがファイルであるかディレクトリであるかを指定するDestinationに既存のディレクトリが含まれておらず、円記号(\)で終わっていない場合、次のメッセージが表示されます。

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

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

/ iコマンドラインオプションを使用すると、このメッセージを抑制できます。これによりxcopy、ソースが複数のファイルまたはディレクトリである場合、宛先はディレクトリであると見なされます。

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

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

xcopyコマンドの前にプレフィックスを付けることをお勧めします。これにより、基本的に次のことが行われます。ユーザーが要求したときにキーecho f |を押すことをシミュレートします。fxcopy

したがって、コマンドは次のようになります。

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を参照してください。echo ffxcopy

更新: Govertが指摘しているように、このハックはローカライズされたバージョンのWindowsでは機能しません。ただし、別のハックが機能します。

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

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

于 2012-12-24T13:58:26.253 に答える
12

xcopyの代わりにcopyを使用してみませんか?コピーは特にファイル用であるため、混乱することはありません。

于 2014-10-08T17:22:32.933 に答える
1

$(TargetPath)を引用符で囲んでみましたか?すべてのMS製品のアンダースコアの代わりに、これまでになく人気のあるスペース文字は、隅々まで物事を台無しにする傾向があります...なぜそれらのダンボがそれを続けているのか...

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

于 2014-01-08T04:15:01.023 に答える