A solução quando o recurso é um arquivo é bastante direto, como indicado por outros:
C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.
Infelizmente, o acima não funciona para diretórios. A função EXIST retorna o mesmo resultado para pastas ausentes e presentes. Felizmente, há uma solução obscura:
C:\> IF NOT EXIST C:\FOLDER\NUL ECHO C:\FOLDER missing.
C:\FOLDER missing.
C:\> MD C:\FOLDER
C:\> IF EXIST C:\FOLDER\NUL ECHO C:\FOLDER exists.
C:\FOLDER exists.
Acontece que para suportar construções como anexar >NUL
em instruções de comando, existe um tipo de arquivo virtual chamado "NUL" em cada diretório. Verificar sua existência é equivalente a uma verificação da existência do diretório.
Esse comportamento está documentado em um artigo da base de conhecimento da Microsoft ( link ) e eu confirmei seu comportamento no FreeDOS 1.1 e em um shell de comando do Windows 7.
EXTRA: O artigo da KB indica que esta técnica também pode ser usada para ver se uma unidade está presente. No caso de verificar a existência da unidade, existem ressalvas:
-
Um erro
Abort, Retry, Fail?
ocorre se a unidade não estiver formatada. -
O uso dessa técnica para verificar a existência de unidades depende da implementação do driver de dispositivo e nem sempre funciona.