Проверьте существование файла с помощью nmake и удалите его

Я использую версию NMAKE для Windows. Я хотел бы проверить наличие файла в файле make. Если он существует, мне нужно удалить его. Вот мой код:

!IF EXIST ("C:\ABC.XML")
    @del ABC.XML
!ELSE
    @echo "FILE DOESN'T EXIST
!ENDIF

Приведенный выше код не работает. Я не мог понять это проблема. Пожалуйста помоги.

1 ответ

Решение

Ваш код не работает, потому что !IF, !ELSE а также !ENDIF являются директивами предварительной обработки, и результат предварительной обработки должен создать допустимый make-файл. Команды разрешены только как часть того, что Microsoft называет блоком описания, который требуется начинать со строки зависимости с одной или несколькими целями и нулем или несколькими иждивенцами.

Вы можете обойти это, выполнив ваши команды на этапе предварительной обработки, включив их в директиву предварительной обработки, заключенную в квадратные скобки ([]). Что-то вроде этого:

!IF EXIST(C:\ABC.XML)
!  IF [del C:\ABC.XML]
!  ENDIF
!ELSEIF [echo FILE DOESN'T EXIST]
!ENDIF

Второй !IF и !ELSEIF директивы используются для предоставления контекста для команд, поэтому они выполняются на этапе предварительной обработки.

Однако я думаю, что вам, вероятно, лучше del команда к блоку описания, где это действительно необходимо. Например, если файл ABC.XML Необходимо удалить, прежде чем его можно будет восстановить, используйте что-то вроде этого:

ABC.XML: ABC.CSV
    -rem The csv2xml translator requires that the XML file not already exist
    -@del ABC.XML 2> NUL
    csv2xml ABC.CSV ABC.XML
Другие вопросы по тегам