Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Nilrac en 24 Julio 2010, 02:30 am



Título: [Batch]Numero de archivos enconrtrados
Publicado por: Nilrac en 24 Julio 2010, 02:30 am
Hola !

Quisiera que me ayudaran a completar el codigo

Código:
echo.>archivo.txt

for %%a in (

Varios archivos

) do (
        if exist %%a (
                             Echo %%a se encontro >> archivo.txt
                             ::COlocar aquí el numero de archivos que se encontraron
)

Es decir, si encontro 2 archivos que especifique en archivo.txt

Gracias


Título: Re: Numero de archivos enconrtrados
Publicado por: maxx93 en 24 Julio 2010, 03:44 am
Modifique un poco el code...

Código:
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%a in (lista.txt) do (if exist %%a (set /a n=!n!+1&echo %%a se encontro >> archivo.txt))
echo -------------------------------->>archivo.txt
echo Se encontraron %n% archivos>>archivo.txt

En lista.txt estan las rutas de los archivos
Salu2


Título: Re: Numero de archivos enconrtrados
Publicado por: leogtz en 24 Julio 2010, 04:00 am
Modifique un poco el code...

Código:
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%a in (lista.txt) do (if exist %%a (set /a n=!n!+1&echo %%a se encontro >> archivo.txt))
echo -------------------------------->>archivo.txt
echo Se encontraron %n% archivos>>archivo.txt

En lista.txt estan las rutas de los archivos
Salu2

¿Dónde quedó el concepto de indentación?
Es un mal hábito de programación poner varias líneas de código en una sola, sacrificas las el número de líneas por la legibilidad.

Quedaría mucho mejor así:
Código
  1. set /a n=0
  2. for /f "tokens=*" %%_ in (lista.txt) do (
  3. if exist "%%_" (
  4. set /a n+=1
  5. echo Se encontró [%%_] >> "archivo.txt"
  6. )
  7. )
  8. echo Se encontraron %n% archivos >> "archivo.txt"


Título: Re: Numero de archivos enconrtrados
Publicado por: maxx93 en 24 Julio 2010, 06:40 am
Quedaría mucho mejor así:
Código
  1. set /a n=0
  2. for /f "tokens=*" %%_ in (lista.txt) do (
  3. if exist "%%_" (
  4. set /a n+=1
  5. echo Se encontro [%%_] >> "archivo.txt"
  6. )
  7. echo Se encontraron %n% archivos >> "archivo.txt"

En la anteúltima linea falto cerrar el ) del for. Salu2.

Editado 24/07/2010 19:01 (GMT -03:00)...
Quedaría mucho mejor así:
Código
  1. set /a n=0
  2. for /f "tokens=*" %%_ in (lista.txt) do (
  3. if exist "%%_" (
  4. set /a n+=1
  5. echo Se encontró [%%_] >> "archivo.txt"
  6. )
  7. )
  8. echo Se encontraron %n% archivos >> "archivo.txt"

Ahora esta mejor... Salu2.


Título: Re: Numero de archivos enconrtrados
Publicado por: Nilrac en 25 Julio 2010, 05:16 am
El code no me funciona


Título: Re: Numero de archivos enconrtrados
Publicado por: maxx93 en 25 Julio 2010, 19:22 pm
Crea un archivo lista.txt con las rutas de los archivos, despues fijate ultilizando mi code...
Código:
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%a in (lista.txt) do (if exist %%a (set /a n=!n!+1&echo %%a se encontro >> archivo.txt))
echo -------------------------------->>archivo.txt
echo Se encontraron %n% archivos>>archivo.txt

Salu2.


Título: Re: Numero de archivos enconrtrados
Publicado por: Nilrac en 25 Julio 2010, 20:06 pm
Perfecto Maxx93  ;-)

Ahora tengo una simple duda:

para desactivar el setlocal enabledelayedexpansion es con setlocal disabledelayedexpansion ?


Título: Re: Numero de archivos enconrtrados
Publicado por: FranciskoAsdf en 25 Julio 2010, 22:22 pm
creo que es con end local


Título: Re: Numero de archivos enconrtrados
Publicado por: leogtz en 25 Julio 2010, 22:43 pm
http://ss64.com/nt/endlocal.html (http://ss64.com/nt/endlocal.html)