bloc de notas con archivos

Iniciado por The Last Hero, 20 Marzo 2011, 20:03 PM

0 Miembros y 1 Visitante están viendo este tema.

The Last Hero

Muy buenas foro  ::) Tenia una pregunta en batch a ver si podeis sacarme la duda. Resulta que quiero saber cuantos archivos .dll y .exe hay en el directorio windows y pense en esto:

Citarcount(glob('c:\windows/*.exe'));>archivo.txt

Tambien pense en un for como este:

CitarFor %%r in ( "c:\windows\*.exe") Do (if exist "%%a" (ECHO/Archivos en windows:"%%a" > Archivo.txt & ECHO$"%%r")

Pero resulta que al crear el archivo.txt no me aparecen los nombres de los archivos de windows, incluso en el segundo caso no aparecen -_- Me gustaria saber como puedo hacer un codigo que saque los archivos ejecutables y librerias dinamicas que hay en windows y los imprima en un bloc de notas  :xD La verdad es que hace mucho que no tocaba el batch  :xD

Bueno espero vuestras respuestas y muchas gracias por adelantado  ;-)

SuperDraco

#1
hola

he visto fallos, pero aparte hay uno muy grande xD, en for defines la variable como "%%r" pero luego intentas hacer el echo con la variable "%%a" la cual no existe porque no la has definido xD bueno, te lo resuelvo! que pa una vez que puedo hacerlo... :P


Código (dos) [Seleccionar]
@echo off
echo+ /Archivos en windows: > Archivo.txt
for /f "tokens=*" %%r in ('dir /B %WINDIR%\*.exe') do Echo+ "%%r" >> Archivo.txt
type archivo.txt
pause

Modificalo a tu gusto!

No se si es así como lo quieres, pero queda así:

Como hace mucho q no usas batch, te recuerdo por si acaso que "dir /b" solo muestra lo que hay en el directorio de windows, pon : "dir /b /S" para buscar tambien en los subdirectorios...

Saludos!

No he vuelto, solo estoy de paso.

The Last Hero

#2
jaja  :xD lo del fallo gordo,es que habia otra secuencia con el %%a y claro como queria hacer otra identica pues copie y pegue, y claro se me paso sustituir todas las "a" y se quedo una  :xD

Por cierto:para carpetas¿como seria? :-\

De todas maneras muchas gracias pitoloko,que ahora que estoy con java he dejado un poco de lado el batch, pero me has recordado lo de los tokens tambien  :P

Muchas gracias amigo y sigue asi.

Cuidate  ::)

SuperDraco

#3
mmm para carpetas, especificame un poco más como lo quieres, aunque creo que te he entendido (Para cada carpeta).


creo que lo que tu quieres es esto:

Código (dos) [Seleccionar]
@echo off

Set Lista="%USERPROFILE%\Desktop\Archivo.txt"

echo+ /Archivos en windows: > %lista%
echo+ >> %lista%



:Find
echo Buscando...

for /f "tokens=*" %%a in ('dir /B /S %WINDIR%\ /A:D') do (
Set Carpeta="%%a"
dir /B "%%a\*.exe" >nul 2>&1
call :Print
)
goto :END


:Print
If %ERRORLEVEL% EQU 1 (
echo+ /Archivos en %carpeta%: >> %lista%
echo No hay archivos >> %lista%
echo+ >> %lista%
goto:eof
)


If %ERRORLEVEL% EQU 0 (
echo+ /Archivos en %Carpeta%: >> %lista%
dir /B %Carpeta%\*.exe >> %lista%
echo+ >> %lista%
goto:eof
)


:END
start /b notepad %lista%
exit


(Me ha costado un poco acabarlo :P) El resultado es esto:


/Archivos en C:\Windows\Downloaded Installations:
No hay archivos

/Archivos en C:\Windows\Downloaded Program Files:
No hay archivos

/Archivos en C:\Windows\ehome:
ehexthost.exe
ehmsas.exe
ehprivjob.exe
ehrec.exe
ehrecvr.exe
ehsched.exe
ehshell.exe
ehtray.exe
ehvid.exe
loadmxf.exe
mcGlidHost.exe
McrMgr.exe
mcspad.exe
mcupdate.exe
Mcx2Prov.exe
McxTask.exe
MediaCenterWebLauncher.exe
RegisterMCEApp.exe
WTVConverter.exe

/Archivos en C:\Windows\en-US:
No hay archivos


Si no quieres que imprima nada cuando no encuentre archivos, cambia todo el trozo de :Print, así

Código (DOS) [Seleccionar]
:Print
If %ERRORLEVEL% EQU 0 (
echo+ /Archivos en %Carpeta%: >> %lista%
dir /B %Carpeta%\*.exe >> %lista%
echo+ >> %lista%
goto:eof
) ELSE (
goto:eof
)



PD: La lista se guarda en el escritorio (Cambialo):
Código (ada) [Seleccionar]

Set Lista="%USERPROFILE%\Desktop\Archivo.txt"


PD2: El código tenía un fallo en las comillas, no buscaba en todas las carpetas, ya esta arreglado y posteado bien :).

SALUDOSSS
No he vuelto, solo estoy de paso.

The Last Hero

Hola de nuevo pitoloko

Lo que queria era saber las carpetas que hay en un directorio, por ejemplo:

En windows-->drivers,system32,syswow64,Cursors...

Muchas gracias por todo pitoloko y un saludo  ::)

SuperDraco

De nada, pues ya sabes "/A:D" es para las carpetas, modifica el batch un poco :P

Saludos!
No he vuelto, solo estoy de paso.

The Last Hero

De nuevo yo  :xD Solo queria darte las gracias y la paciencia que has tenido,solo tengo una cosas mas a ver si puedes ayudarme. Cuando escribo el codigo e intento poner otro es decir:

Citar@echo off
echo+ /Archivos en windows: > Archivo.txt
for /f "tokens=*" %%r in ('dir /B %WINDIR%

\*.exe,*.dll') do Echo+ "%%r" >> Archivo.txt
type archivo.txt


echo+ /Archivos en system32: > Archivo.txt
for /f "tokens=*" %%s in ('dir /B %system%

\*.exe,*.dll') do Echo+ "%%s" > Archivo.txt
type archivo.txt

Me salen en el bloc de notas:archivos de system32 y nada mas.¿Como podria hacer para que me imprima tanto los archivos de system32 como los de windows,es decir, que en el bloc de notas salgan los de windows,luego los de system32, asi sucesivamente para todo lo que yo quiera? :-\

Bueno muchas gracias de nuevo y tambien por tu paciencia

Saludos

SuperDraco

#7
No existe ninguna variable de entorno llamada %system% '¬¬

http://en.wikipedia.org/wiki/Environment_variable

Y si solo pones un ">" estás reemplazando el "archivo.txt", osea, tienes que poner 2 ">>" para seguir escribiendo debajo del archivo.


Código (dos) [Seleccionar]
@echo off
echo+ /Archivos en windows: > Archivo.txt
for /f "tokens=*" %%r in ('dir /B %WINDIR%\*.exe') do Echo+ "%%r" >> Archivo.txt
echo+ >> Archivo.txt


echo+ /Archivos en system32: >> Archivo.txt
for /f "tokens=*" %%r in ('dir /B %Windir%\system32\*.exe') do Echo+ "%%r" >> Archivo.txt
start /b notepad archivo.txt
exit



Si las carpetas las vas a poner manualmente pues pones "%Windir%\NOMBRE_DE_LA_CARPETA" y listo, en cambio, si quieres que se haga automáticamente y con TODAS las carpetas/subcarpetas de "c:\windows\*", pues lo comentas y ya me repaso mañana el código xDDD


Ah, se me olvidaba lo del *.exe,*.dll creo que no puedes buscar más de una extension en el mismo comando, pero no se, a ver si nos saca de dudas Leo.

saludos.
No he vuelto, solo estoy de paso.

The Last Hero

#8
La verdad es que el codigo esta bien, no me da error ni nada por el estilo.

Si tu consideras que este tema esta siendo muy largo avisame y lo damos por solucionado, a mi no me importa  :xD Solo que quiero quitarme todas las dudas que tengo.

Hay una cosa:tengo hecho un for que imprime que archivos se encuentran en un directorio,y los imprime en el bloc de notas archivo.txt, pero al abrirlo,solo me sale nombres de los archivos de windows y de system32, pero no me aparece el primer for que es el que crea el archivo, y que indica que archivos estan en un directorio concreto, si no me he explicado bien dimelo y te lo comento mas profundamente.

Por cierto¿un archivo por ejemplo, de un virus, puede eliminarse si se entra en el modo a prueba de fallos, elimine su proceso en memoria y haga esta secuencia:

Del  /f /q /i %homdrive%\archivo.exe?

Como siempre muchas gracias por tu paciencia y consejos

Un saludo

SuperDraco

#9
Hombre, es que para estas cosas con una explicación no basta xD si no se ve donde está el error,así que mejor pega aquí el código (ENTERO) para que podamos revisarlo yo y los demás (No te creas que yo se mucho...). No tengo ningún problema en "inspeccionar" tus códigos, Batch es algo que me gusta mucho usar y poder ayudar no te preocupes ^^


Respecto a lo de:

Del /f /q /i %homedrive%\archivo.exe

La /i no se porque la has puesto  :rolleyes:, deduzco que intentas definir el atributo del archivo, Entonces sería así:

Del /f /q /A i %homedrive%\archivo.exe

Y SI, con DEL borras el archivo del discoduro, sin pasar por la papelera de reciclaje. Así que no creo que hubiese una posible reinfección del virus, a menos que sea polimorfo o algo de eso o un rootkit, no se de eso ya no entiendo xD pero tengo entendido que cuando intentas eliminarlo, se vuelve a crear el virus en otra parte del discoduro, porque tiene claves en el registro, así que deberías borrar tambien esas claves (Si tuviera) con:

Reg delete /?

Por cierto, te miras la ayuda de los comandos, ¿verdad?

Del /?  :laugh:
No he vuelto, solo estoy de paso.