.png)
Estoy en la consola de Windows tratando de averiguar si un archivo/carpeta existe o no.
EXIST
podría usarse por lotes, pero no está disponible en la línea de comandos:
C:\Users\WIN7PR~1>EXIST C:\Users
'EXIST' is not recognized as an internal or external command, operable program or batch file.
Respuesta1
La solución cuando el recurso es un archivo es bastante sencilla, como lo indican otros:
C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.
Desafortunadamente, lo anterior no funciona para directorios. La función EXIST devuelve el mismo resultado para las carpetas presentes y faltantes. Afortunadamente, existe una oscura solución:
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.
Resulta que para admitir construcciones como agregar >NUL
declaraciones de comando, hay una especie de archivo virtual llamado "NUL" en cada directorio. Comprobar su existencia equivale a comprobar la existencia del directorio.
Este comportamiento está documentado en un artículo de la base de conocimientos de Microsoft (https://support.microsoft.com/en-us/kb/65994) y he confirmado su comportamiento en FreeDOS 1.1 y en un shell de comandos de Windows 7.
EXTRA: El artículo de KB indica que esta técnica también se puede utilizar para ver si hay una unidad presente. Sin embargo, en el caso de comprobar la existencia de la unidad, existen advertencias:
Se produce un
Abort, Retry, Fail?
error si la unidad no está formateada.El uso de esta técnica para comprobar la existencia de la unidad depende de la implementación del controlador del dispositivo y es posible que no siempre funcione.
Respuesta2
Puedes usar un simple
DIR C:\User
Respuesta3
Puede usar type
el comando, devolverá el contenido de un archivo de texto sin abrirlo y, para un directorio, devolverá: Acceso denegado.
Si el archivo o directorio no está disponible, recibirá el mensaje: El sistema no puede encontrar el archivo especificado.
Así por ejemplo:
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.
Respuesta4
Puedes usar este código:
<pre>
:init
SETLOCAL enabledelayedexpansion
GOTO make_dir
:make_dir
ECHO .
ECHO Checking if exists directory %out_path% ...
CD %out_path%
IF !ERRORLEVEL! GTR 0 (
ECHO Directory doesn't exist, creating...
MD %out_path%
GOTO make_dir
) ELSE (
ECHO Directory already exists.
)
:GOTO back_it_up
:back_it_up
::Procedure that makes an backup
GOTO done
:done
ECHO Finished
SETLOCAL
EXIT /B
</pre>