Título: Cómo diferenciar un directorio de un archivo Publicado por: <ИΘZIЭ(ŦB> en 25 Agosto 2009, 05:12 am Buenas noches compañeros. Bueno, no sé que horario tengan uds, pero aquí es de noche. Saludos.
Quisiera saber si los archivos y directorios tienen agún identificador que los diferencie entre sí, de modo que se pueda verificar a través de un .bat. Tengo un .bat que pide al usuario definir la ruta de un directorio o archivo, para luego almacenar ese valor en una variable. Lo que necesito ahora es poder saber si la ruta se trata de un archivo o un directorio, pero no sé cómo. Se me ocurrió verificar si la ruta tenía extensión, ya que así sabría que se trata de un archivo, pues los directorios no tienen extensión. No obstante, recordé que hay muchos archivos que tampoco tienen extensión, así que no lo intenté. Así pues, consideré necesario acudir una vez más a uds a ver si me ayudan. Se los agradezco de antemano. Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: leogtz en 25 Agosto 2009, 06:21 am Código Código:
Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: 0x0309 en 25 Agosto 2009, 08:27 am con if y agregas un \ al final
Por ejemplo si tu carpeta se llama: nueva carpeta Código: if exist "nueva carpeta\" (echo. Es carpeta) else ( Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: kevlar en 27 Agosto 2009, 16:23 pm Saludos
Puedes probar con un simple CD RUTA Si la ruta es un archivo, entonces la variable %ERRORLEVEL% nos arrojaá un 1 De lo contrario si efectua el CD correctamente nos arroja 0 (cero) F:\Armando>cd semana.bat El nombre del directorio no es válido. F:\Armando>echo %ERRORLEVEL% 1 F:\Armando>cd APPS F:\Armando\APPs>echo %ERRORLEVEL% 0 ;D Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: leogtz en 27 Agosto 2009, 17:22 pm El problema aquí es que podrías no tener permisos para acceder a ese directorio.
Pero podría funcionar. Código: cd /d "ruta" && ( Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: 0x0309 en 2 Septiembre 2009, 05:25 am Miren, probé el código de Leo, no funciona bien porque:
por ejemplo: Código: C:\>code.bat c:\pagefile.sys Se podría usar attrib, pero el problema es que attrib no muestra el atributo de directorio, usando una lógica similar a la de Leo de ver los atributos usando for que se expanden más o menos así si son un archivo: Código: --------- Código: d-------- Código: pero el problema es que con archivos especiales, como el pagefile.sys el for expande como si no existiera. hice este código más rebuscado, con validaciones: Código: @echo off que produce: Código: C:\>tipo.bat "c:\Archivos de programa" si se fijan el pagefile dice que no se encuentra, así es que a mí parecer la mejor forma es la que había puesto en el post anterior: Código: C:\>if exist "c:\pagefile.sys\" (echo.es directorio) else ( Así es que este código está a prueba de balas. atr.bat Código que devuelve en errorlevel 0 si no existe, 1 si es directorio y 2 si es archivo. Así que si lo llaman desde otro archivo: test.bat Código
que produce: Código: C:\>test.bat "c:\Archivos de programa" Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: xassiz_ en 2 Septiembre 2009, 18:21 pm Una cosa 0x0309, que diferencia hay entre estas cosas:
Código: exit /b Código: exit /b 0 Código: exit /b %t% Supongo que deja el errorlevel en lo que viene a continuacion del /b code.bat Código: echo.exit /b + errorlevel file.bat Código: @echo off Comprobado, lo acabo de aprender gracias a tu code ;D Pero de todas formas, solo tiene esa aplicacion? Gracias de nuevo 0x! ;-) Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: leogtz en 3 Septiembre 2009, 04:06 am Sí, sólo tiene ese aplicación.
Código: exit /b "Error level a devolverle al sistema operativo" Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: xassiz_ en 3 Septiembre 2009, 11:43 am Ok, gracias, vere si le saco utilidad ;D
Título: Re: Cómo diferenciar un directorio de un archivo Publicado por: <ИΘZIЭ(ŦB> en 23 Junio 2010, 22:02 pm Disculpen mi auscencia. No recordaba este tema.
Gracias a todos por su interés. De verdad me ha servido de mucho. Sin embargo, ya llevo tiempo usando este método que me parece bastante cómodo: Código
Gracias a todos. |