2011-06-03 8 views
1

背景:ファイルを別の場所にコピーするポストビルドプロセスがあります。DOSスクリプトでファイルの可用性をチェックする方法はありますか?

copy $(TargetPath) "%programfiles%\mypath" 

この手順は、別のプロセスがファイルを使用している場合に失敗する可能性があります。ステップは重要ではないので、可能であれば、私はその失敗を無視したいと思います。これを行うには、ファイルが別のプロセスで使用されているかどうかを確認するスクリプトが必要です。

質問:DOSスクリプトでファイルをテストして、それが別のプロセスで使用されているかどうかを判断する方法はありますか?

答えて

0

私はコピーを実行した後でerrorlevelを調べる必要がありました。その結果、exitを正しく処理できるようになりました。解決策は次のとおりです。

copy $(TargetPath) "%programfiles%\mypath" 
if errorlevel 1 goto BuildProcessFailed 

goto BuildProcessOK 
:BuildProcessFailed 
echo BUILDPROCESS FAILED FOR PROJECT $(ProjectName) 
goto ExitBuildProcess 
:BuildProcessOK 
echo BUILDPROCESS OK FOR PROJECT $(ProjectName) 

:ExitBuildProcess 
1

ファイルが存在するかどうかを確認して、実行中の場合でも.dll/.exeの名前を変更できます。 .pdbファイルもやりたいことがあります。

IF EXIST $(TargetName).deleted del $(TargetName).deleted 
IF EXIST $(TargetName).pdb.deleted del $(TargetName).pdb.deleted 
IF EXIST "%programfiles%\mypath\$(TargetName)$(TargetExt)" REN "%programfiles%\mypath\$(TargetName)$(TargetExt)" $(TargetName).deleted 
IF EXIST "%programfiles%\mypath\$(TargetName)$(TargetExt)" REN "%programfiles%\mypath\$(TargetName)$.pdb" $(TargetName).pdb.deleted 
copy $(TargetPath) "%programfiles%\mypath" 
関連する問題