2012-05-30 11 views
17

Hola Estoy buscando escribir un archivo por lotes para verificar si hay algún archivo dentro de una carpeta determinada.Verifique si existe algún tipo de archivo en un directorio usando el script BATCH

Hasta ahora he intentado lo siguiente

if EXIST FOLDERNAME\\*.* (echo Files Exist) ELSE (echo "Empty") 

puedo conseguir que funcione si conozco la extensión de archivo como un archivo txt con el follwing

if EXIST FOLDERNAME\\*.txt (echo Files Exist) ELSE (echo "Empty") 

Gracias por su ayudar

+0

posible duplicado de [Batc h script: busca si una carpeta contiene algún archivo] (http://stackoverflow.com/questions/3922200/batch-script-search-if-a-folder-contains-any-files) – Synetech

Respuesta

4

Se puede usar esta

@echo off 
for /F %%i in ('dir /b "c:\test directory\*.*"') do (
    echo Folder is NON empty 
    goto :EOF 
) 
echo Folder is empty or does not exist 

Tomado de here.

Eso debería hacer lo que necesita.

+0

No funciona. "Archivo no encontrado". Sin embargo, existe. – Owl

28

Para comprobar si una carpeta contiene al menos un archivo

>nul 2>nul dir /a-d "folderName\*" && (echo Files exist) || (echo No file found) 

Para comprobar si una carpeta o cualquiera de sus descendientes contienen al menos un archivo

>nul 2>nul dir /a-d /s "folderName\*" && (echo Files exist) || (echo No file found) 

Para comprobar si una carpeta contiene al al menos un archivo o carpeta.
Nota, además de la opción /a para permitir la búsqueda de archivos/carpetas ocultos y del sistema.

dir /b /a "folderName\*" | >nul findstr "^" && (echo Files and/or Folders exist) || (echo No File or Folder found) 

Para comprobar si una carpeta contiene al menos una carpeta

dir /b /ad "folderName\*" | >nul findstr "^" && (echo Folders exist) || (echo No folder found) 
+0

+1. 'FIND/V" "' parece funcionar tan bien como 'FINDSTR"^"'. –

+1

@AndriyM - 'FINDSTR .' funciona también :-) – dbenham

+11

¿Qué es esta brujería? – Shawson

8

Para los archivos en un directorio, que puede utilizar cosas como:

if exist *.csv echo "csv file found" 

o

if not exist *.csv goto nofile 
+0

Esto solo es útil si solo puede haber un subconjunto muy limitado de tipos de archivos; y lo sabes con certeza; y sabes lo que son. Esta es una solución muy limitada. – user1167442

+0

Una extensión de '.csv' no garantiza que la entrada sea un archivo. No hay nada que le impida crear un directorio con un '.csv' o cualquier otra extensión. – dbenham

Cuestiones relacionadas