Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: guajolote_vengador en 20 Marzo 2012, 07:00 am



Título: consultas sobre codigo batch y comando cipher
Publicado por: guajolote_vengador en 20 Marzo 2012, 07:00 am
Saludos a todos los miembros del foro, como notaran soy nuevo tanto en el foro como en esto del batch, así que aquí mi consulta.

Quisiera saber como puedo hacer para que se borren archivos de cierto tipo en todo el disco duro, digamos que lo que quiero hacer es borrar todos los archivos *.pdf

Lo que se me ocurre es usar el comando:

del /s /f /q c:\*.pdf

Con esto borro los archivos pero tarda demasiado además de que borra también los archivos contenidos en las carpetas del sistema (Windows, Program Files, etc) , por ahí leí que se puede hacer a partir de un listado txt, pero es ahí donde esta el problema pues yo quiero lo inverso, es decir que omita las carpetas que están en el listado txt.

Seria lo inverso de esto:

For /f "delims=" %n in (carpetas.txt) do del *.pdf /s /f /q "%n"

Este ejemplo borra todos los archivos pdf contenidos en carpetas del txt

Entonces lo que yo quiero es que haga lo contrario, digamos que en el listado txt indicara las carpetas a omitir:

C:\windows
C:\Program Files
C:\Documents and Settings\User\Configuración local
C:\Documents and Settings\User\Datos de programa
etc...

Espero haberme explicado.

Y la duda sobre el comando cipher es la siguiente:

Esto es al hacer una copia de seguridad de los certificados, digamos que lo quiero hacer en un bat, entonces:

echo mi_password|cipher /R:C:\archivo

Pero hay un problema cuando instalo los certificados en otro equipo me indica que no es la contraseña, en que me equivoco.

Les agradezco por adelantado.


Título: Re: consultas sobre codigo batch y comando cipher
Publicado por: Eleкtro en 20 Marzo 2012, 07:50 am
Para el primer problema hay 2 opciones.



EDITO:
Asegurate de que en la "lista.txt" escribes las rutas sin el último slash.

Ejemplo:
BIEN:  C:\carpeta\subcarpeta
MAL:  C:\carpeta\subcarpeta\



- Proteger los pdf de tu lista.

      Por defecto el comando Del no elimina archivos ocultos si no usas el parámetro /A, Entonces...

Código
  1. For /F "Tokens=*" %%# in ('Type "Lista.txt"') Do (Attrib -S -R +H "%%#\*.pdf")
  2. Del /Q /F /S "%HomeDrive%\*.pdf"
  3. For /F "Tokens=*" %%# in ('Type "Lista.txt"') Do (Attrib -H "%%#\*.pdf")

PD: Usa el parámetro "Attrib /S" si necesitas que el Attrib trabaje en las subcarpetas de las carpetas de tu lista.


- Filtrar la lista de carpetas

     Esta opción tardaría un poco en realizarse ya que desde el propio comando DEL no se puede filtrar nada... Es lo que hay.

     El resultado de este Batch que he hecho es obtener un listado de las carpetas de "C:\" Pero eliminando de esa lista las carpetas de tu "lista.txt".


Código
  1. @echo off
  2.  
  3. Set Num=0
  4. For /F "Tokens=*" %%a in ('Type Lista.txt ^| Find /V /C ""') do (Set Total=%%a)
  5.  
  6. :Listar
  7. Dir /B /S /AD "%Homedrive%\">"%TEMP%\folder_list.tmp"
  8.  
  9. :Filtrar
  10. If %num% EQU %total% (Goto :Delete)
  11. For /F "Tokens=*" %%# in ('Type "Lista.txt" ^| More /E +%num%') Do (
  12. Type "%TEMP%\folder_list.tmp" | FIND /V "%%#">"%TEMP%\new_folder_list.tmp"
  13. Del "%TEMP%\folder_list.tmp"
  14. Ren "%TEMP%\new_folder_list.tmp" "folder_list.tmp"
  15. Set /A num+=1
  16. Goto :Filtrar
  17. )
  18.  
  19. :Delete
  20. For /F "Tokens=*" %%# in ('Type "%TEMP%\folder_list.tmp"') Do (Del /Q /F /S "%%#\*.pdf")



Sobre lo del cipher, No se que decirte, No lo he usado, Pero el comando lo escribiste bien.


Saludos!


Título: Re: consultas sobre codigo batch y comando cipher
Publicado por: guajolote_vengador en 21 Marzo 2012, 05:18 am
El primer code lo entiendo a la perfección, aunque no es lo que quería, pues de todos modos sigue buscando en todos los directorios, pero el segundo code me funciono perfecto, ecepto que no borra los archivos que están en raíz, es decir c:\archivos.pdf

Pero igual así me sirve, gracias por el code y seguiré probando lo del cipher a ver que es lo que esta mal.

Saludos.