2011-06-03 57 views
1

背景:我有一個後期構建過程,將文件複製到另一個位置。它看起來像這樣:有沒有辦法在DOS腳本中檢查文件的可用性?

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

如果另一個進程正在使用該文件,此步驟可能會失敗。這一步並不重要,所以如果可能的話,我想忽略失敗。爲此,我需要腳本來檢查以確定文件是否被另一個進程使用。

問:有沒有一種方法可以測試DOS腳本中的文件以確定它是否被另一個進程使用?

回答

0

好吧,所以我需要在執行復制後檢查錯誤級別,以便我可以正確處理退出。解決方案如下:

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" 
相關問題