ビルドプロセス後に作成した.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これがファイルなのかディレクトリなのかを尋ねる...名前を変更してコピーするのではなく、最初に名前を付けたファイルをディレクトリにコピーするだけで機能します
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は宛先がファイルであるかディレクトリであるかを尋ねません。
Xcopyの代わりにcopyを使用しないのはなぜですか?コピーは特にファイル用なので、混乱はありません。
$(TargetPath)を引用符で囲みましたか?すべてのMS製品のアンダースコアではなく人気のあるスペース文字が、あらゆる場所で物事を台無しにする傾向があります。
のように:存在する場合 "$(TargetPath)"