Есть ли способ проверить доступность файла в сценарии DOS? - PullRequest
1 голос
/ 03 июня 2011

Справочная информация: у меня есть процесс после сборки, который копирует файл в другое место. Это выглядит так:

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

Этот шаг может завершиться ошибкой, если файл используется другим процессом. Этот шаг не критичен, поэтому, если возможно, я бы хотел игнорировать ошибку. Для этого мне нужен скрипт, чтобы проверить, используется ли файл другим процессом.

Вопрос: Есть ли способ проверить файл в сценарии DOS, чтобы определить, используется ли он другим процессом?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Вы можете увидеть, существует ли файл, а затем переименовать файл .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"
0 голосов
/ 03 июня 2011

Хорошо, поэтому мне нужно было проверить уровень ошибки после выполнения копирования, чтобы я мог правильно обработать выход.Решение ниже:

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
...