Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: el_lujo en 26 Agosto 2016, 22:41 pm



Título: Borrado de archivos selectivos en MsDos Batch
Publicado por: el_lujo en 26 Agosto 2016, 22:41 pm
Saludos, señores.

Debido a una necesidad, quisiera una ayuda de ustedes los expertos.

Mi necesidad es la siguiente:
a 50 usuarios se les guardan todos los archivos de documentos con un gestor de respaldo; pero cada día debo borrar esos archivos navegando cada una de las carpetas.

En síntesis, quisiera saber si existe una forma (creo que sí) que yo pueda en batch borrar todos los archivos exceptuando algunas subcarpetas y por ende los archivos en esa subcarpeta.

Navegando por la web vi unas líneas de códigos para manejo de borrado de carpetas y obviando algunas dependiendo de un archivo .txt.

Lo encontrado fue esto:
Esto para crear la lista de directorios y guardarlos en un archivo:

Código:
dir /ad /b > carpetas.txt
Y esto para eliminar las subcarpetas

Código:
For /f “delims=” %n in (carpetas.txt) do rmdir /s /q “%%n”

Ahora bien, tratando de implementar esto a mi necesidad:

Código:
@ECHO OFF
TITLE BORRADO DOCs. OFFICE
ECHO SE COMENZARA CON EL BORRADO DE LOS ARCHIVOS
ECHO ASEGURESE DE QUE LA CARPETA DE LOS ARCHIVOS EN OFFICE
ECHO ESTA MAPEADA EN LA UNIDAD Z:
PAUSE
Z:
For /f “delims=” %n in (carpetas.txt) do rmdir /s /q “%n”
ECHO BORRADO COMPLETO
PAUSE > NULL

La pregunta:

Cómo puedo, en vez de borrar subcarpetas, borrar sólo los archivos, tanto de la carperas como subcarpetas de esa unidad?

Gracias.


Título: Re: Borrado de archivos selectivos en MsDos Batch
Publicado por: SrMcLister en 27 Agosto 2016, 00:57 am
Podrías indicarle al batch que quieres que te borre todos los docx o de la extensión que quieras..
Hacer un for para recorrer esa unidad por carpetas y subcarpetas como tienes en tu script ya, pero para mi que rmdir habría que sustituirlo por del o erase que es para borrar archivos no carpetas.
Hace bastante que no me examino de Windows jaja
Siento no poder ayudarte más, si lo enfocas de distinta forma no dudes en escribirlo
Un Saludo crack!!


Título: Re: Borrado de archivos selectivos en MsDos Batch
Publicado por: Eleкtro en 27 Agosto 2016, 09:35 am
La pregunta:

Cómo puedo, en vez de borrar subcarpetas, borrar sólo los archivos, tanto de la carperas como subcarpetas de esa unidad?

Código
  1. For /F "UseBackQ Tokens=* Delims=" %%# In (
  2.    "%CD%\Carpetas.txt"
  3. ) Do (
  4.    PUSHD "%%~#"
  5.    Call Echo "%%CD%%"
  6.    (Call Del /Q /S "%%CD%%\*.*")2>Nul
  7.    POPD
  8. )

Saludos


Título: Re: Borrado de archivos selectivos en MsDos Batch
Publicado por: el_lujo en 29 Agosto 2016, 17:07 pm
Gracias, señores por sus aportes.  Voy a probar el código enviado por SrMcLister.

Mil gracias nuevamente.


Título: Re: Borrado de archivos selectivos en MsDos Batch
Publicado por: Tomas1982 en 30 Agosto 2016, 21:02 pm
Esto se puede modificar en dependencia del interés que tenga cada User.
Espero que te sirva..
Código
  1. @echo off
  2. :: Unidades a escanear
  3. for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y) do (
  4. ::extensiones a borrar. Puedes poner las que desees, separadas por coma y un espacio execto la ultima.  
  5. for %%e in (jpg, docx, pdf, mpg) do (
  6. for /f "tokens=*" %%a in ('dir /b /s "%%i:\*.%%e"') do (
  7. ERASE /F /Q "%%a"
  8. )
  9. )
  10. )
  11. exit
  12.