Verifique se existe um arquivo / pasta com a linha de comando cmd (NÃO script em lote)

4

Estou no console do Windows tentando descobrir se um arquivo / pasta existe ou não.

EXIST pode ser usado em lote, mas não está disponível na linha de comando:

C:\Users\WIN7PR~1>EXIST C:\Users
'EXIST' is not recognized as an internal or external command, operable program or batch file.
    
por Nicolas Raoul 25.01.2013 / 10:19

4 respostas

6

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.

por 12.04.2016 / 14:42
6

Você pode usar um simples

DIR C:\User
    
por 25.01.2013 / 10:22
4

Basta colocar if na frente:)

if exist C:\Users echo It exists!
    
por 25.01.2013 / 10:26
4

Você pode usar o comando type , ele retornará o conteúdo de um arquivo de texto sem abri-lo e, em um diretório, ele retornará: Acesso negado.

Se o arquivo ou diretório não estiver disponível, você receberá a mensagem: O sistema não pode encontrar o arquivo especificado.

Então, por exemplo:

C:\>type c:\temp
Access is denied.

C:\>type c:\example.txt
Some example content in a text file

C:\>type c:\doesnotexist
The system cannot find the file specified.
    
por 25.01.2013 / 14:06