Hello.. sera que es posible recorrer los directorio y subdirectorios y generar un log.txt con todo lo escaneado algo o algo asi nombre de carpeta y los archivos como lo muestra la funcion dir no tengo ni idea por donde emprezar :-\
:¬¬ Me has pillado con ganas de hacerle el trabajo a los demás :¬¬
Te recomiendo leer un manual básico, todo eso lo aprendes fácil.
Solamente tienes que redireccionar. (>, >>)
Dir /B /S > Log.txt
Dir /?
/A Muestra los archivos con los atributos especificados.
atributos D Directorios
H Archivos ocultos
S Archivos de sistema
- Prefijo de exclusión
Algo más sofisticado, creo que así es más o menos como lo quieres (hecho en 5 minutos +o- XD):
@echo off
Title=Foro.Elhacker.Net
REM Simple LOG de directorios.
REM By PiToLoKo
REM Foro.Elhacker.Net
echo+ >> "%temp%\Log.txt"
echo ============================= >> "%temp%\Log.txt"
Echo Fecha del escaneo: %Date% >> "%temp%\Log.txt"
echo ============================= >> "%temp%\Log.txt"
echo+ >> "%temp%\Log.txt"
Echo+ & echo+ El directorio actual es:
Echo %cd%
Echo+ & echo+ Pulse una tecla para empezar el escaneo...
pause >nul 2>&1
For /F "tokens=*" %%a in ('Dir /B /S /A:D') do (
Set folder=%%a
Call :Scan
)
Title=foro.elhacker.net
echo+
echo ===========================
Echo El escaneo ha finalizado.
echo ===========================
Notepad "%temp%\Log.txt"
Pause >nul
exit
:Scan
Title=Escaneo en progreso..."
Echo Escaneando "%folder%"
Echo -=[ %folder% ]=- >> "%temp%\Log.txt"
echo+ >> "%temp%\Log.txt"
Dir /B /A-D "%folder%">> "%temp%\Log.txt"
echo+ >> "%temp%\Log.txt"
goto:eof
En fin, se pueden hacer muchas cosas... xD
A ok voy a probar e intento modificar con la funcion que quiero realizar... Es que la verdad a veces veo unos comandos que ni me imagino de donde salieron como hiciste para saber tanto de Batch pitoloko :-\
Cita de: dany3j en 29 Junio 2011, 20:48 PM
como hiciste para saber tanto de Batch pitoloko :-\
LEER manuales :¬¬
LEER la ayuda del comando "/?"
Y practicar :xD
Y postear mis dudas, como tú :-[
Aqui el verdadero experto en Batch es el mod xD
A ok por eso me estoy poniendo a estudiar bastande empezando por lo basico. Pero esto es para hacer un pequeña utilidad para limpiar el pendrive algo parecido a un pequeño antivirus en batch que me cambie los atributos de aarchivos y carpetas ocultas borre los archivos .exe meñores a "x" tamaño las carpetas vacias y al final me de un reporte de lo que ha hecho... lo unico que eso esta muy avanzado para mi conocimiento :-\ pero bueno espero con esfuerzo y la ayuda de expertos como tu y los moderadores del foro poder hacerlo pronto... :(
Lo de las carpetas 0 bytes, en batch me dio malos resultados, el comando DIR me mentía :xD, así que te recomiendo este vbs que me dijo Novlucker, lo ejecutas desde el batch y listo...
"Comprobar_Carpetas_vacias.vbs"
Dim objFileSystem, objTheFolder
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objTheFolder = objFileSystem.GetFolder(wscript.arguments(0))
If objTheFolder.size > 1 then
wscript.quit(0)
else
wscript.quit(1)
end if
para usarlo en un batch, puedes hacerlo por ejemplo así:
@echo off
:Carpetas vacias
For /F "Tokens=*" %%a in ('dir /B /S /A:D "RUTA_DE_LA_CARPETA"') do (
set folder=%%a
call :Comprobar carpeta)
:Comprobar carpeta
"Comprobar_Carpetas_vacias.vbs" "!folder!"
If %errorlevel% EQU 0 (
goto:eof
) ELSE (
rd /q "!carpeta!\"
goto:eof
)
Para los archivos menores de X bytes. Puedes usar esto:
~z - display the file size
Aunque como ya he dicho, no recomiendo usarlo sobre carpetas, engaña mucho. En cambio si lo usas sobre archivos nunca me ha dado problemas, y he hecho muchisimas pruebas :xD
en fin aqui un script que posteé hace tiempo:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /B /s /A-D "%systemdrive%\*.exe"') do (
set archivo=%%a
set size=%%~za
call :log
)
:log
If !size! EQU 0 (
echo !archivo! >> log.txt
echo !size! >> log.txt
echo+ >> log.txt
del /Q /F "!archivo!"
goto:eof
) ELSE (
goto:eof)
Modificalo a tu gusto :xD
También puedes usar el script de Novlucker, el vbs, solo hay que modificar una cosa:
Set objTheFolder = objFileSystem.GetFolder
Set objTheFolder = objFileSystem.getfile
PD: objTheFolder no importa, es el nombre de la variable.
saludos.
Voy a ver que hago con tanto codigo por lo menos separados los hago funcionar bien y les hago pequeñas modificaciones :rolleyes: lo dificil va a ser para unir todo eso y llegar a lo que quiero pero vamos a ver si lo puedo hacer nada es imposible para una mente dispuesta dicen por hay. :laugh:
Cita de: dany3j en 29 Junio 2011, 23:14 PM
Voy a ver que hago con tanto codigo por lo menos separados los hago funcionar bien y les hago pequeñas modificaciones :rolleyes: lo dificil va a ser para unir todo eso y llegar a lo que quiero pero vamos a ver si lo puedo hacer nada es imposible para una mente dispuesta dicen por hay. :laugh:
Unificarlo es fácil, ya te he dado lo más dificil.
Por cierto, se me olvidó comentar que para eliminar carpetas vacías, conviene borrar primero los archivos ocultos "desktop.ini" que genera automáticamente windows. A menos que uses un icono personalizado para cada carpeta... es un archivo inservible, y obviamente esas carpetas ya no se considerarían vacías, aqui otro ejemplo mio sacado de un batch por si te sirve xD
@echo off
if not exist "Comprobar_accesos_directos_rotos.vbs" (goto :next37)
if not exist "Comprobar_Carpetas_vacias.vbs" (goto :next37)
setlocal enabledelayedexpansion
:Desktop.ini
For /F "Tokens=*" %%a in ('dir /B /S /A H "%appdata%\Microsoft\Windows\Start Menu\Programs\*desktop.ini"') do (del /q /F /A H "%%a")
For /F "Tokens=*" %%a in ('dir /B /S /A H "%ProgramData%\Microsoft\Windows\Start Menu\Programs\*desktop.ini"') do (del /q /F /A H "%%a")
:Accesos directos rotos
For /F "Tokens=*" %%a in ('dir /B /S "%appdata%\Microsoft\Windows\Start Menu\Programs\*.lnk"') do (
Set archivo="%%a"
call :comprobar)
For /F "Tokens=*" %%a in ('dir /B /S "%ProgramData%\Microsoft\Windows\Start Menu\Programs\*.lnk"') do (
Set archivo="%%a"
call :comprobar)
:Carpetas vacias
For /F "Tokens=*" %%a in ('dir /B /S /A:D "%appdata%\Microsoft\Windows\Start Menu\Programs\"') do (
set carpeta=%%a
call :Comprobar carpeta)
For /F "Tokens=*" %%a in ('dir /B /S /A:D "%ProgramData%\Microsoft\Windows\Start Menu\Programs\"') do (
set carpeta=%%a
call :Comprobar carpeta)
setlocal disabledelayedexpansion
goto :next37
:Comprobar
Comprobar_accesos_directos_rotos.vbs !archivo!
If %errorlevel% EQU 0 (
goto:eof
) ELSE (
Del /Q /F !archivo!
goto:eof
)
:Comprobar carpeta
"Comprobar_Carpetas_vacias.vbs" "!carpeta!"
If %errorlevel% EQU 0 (
goto:eof
) ELSE (
rd /q "!carpeta!\"
goto:eof
)
Comprobar_accesos_directos_rotos.vbsset objshell = createobject("wscript.shell")
set objlink = objshell.createshortcut(wscript.arguments(0))
set objfso = createobject("scripting.filesystemobject")
if objfso.fileexists(objlink.targetpath) then
wscript.quit(0)
else
wscript.quit(1)
end if
Si es cierto muchasimas gracias por todo pitoloko manos a la obra... voy a terminar mi pequeña herramienta despues publico como me fue. ;-)