varios una todos subdirectorios script por para otro mover los listar fecha eliminar directorios directorio comando carpeta borrar archivos command-line batch-file dos

command line - una - Línea de comando para borrar archivos recursivamente pero excluyendo un cierto archivo



mover varios archivos en linux (6)

Puede recorrer fácilmente un conjunto de archivos y ejecutar un comando en cada uno, como este:

set match=D:/blah/M*.zip for %%x in (%match%) do ( del %%x )

Entonces creo que debes leer este artículo sobre cómo manipular cadenas en DOS: http://www.dostips.com/DtTipsStringManipulation.php

Necesito eliminar archivos de un tipo determinado (archivos .zip, por ejemplo) de una carpeta y todas sus subcarpetas, usando la línea de comando. Idealmente, estoy buscando algo que pueda ejecutarse como un archivo .bat en Windows.

Sé que hay un modificador / S para que el comando DEL se vea en las subcarpetas, pero para agregar al desafío necesito excluir archivos de un cierto nombre ("Backup.zip" como ejemplo).

¿Hay alguna manera de eliminar archivos recursivamente pero excluir archivos de un cierto nombre? No será práctico en mi situación enumerar explícitamente todos los nombres de archivo que deseo eliminar, solo los archivos del tipo coincidente que no deseo eliminar.



Esta secuencia de comandos eliminará todos los archivos .zip de una carpeta (y subcarpetas), PERO SOLO SI el nombre del archivo no contiene la palabra "copia de seguridad", o "Copia de seguridad" o "COPIA DE SEGURIDAD", etc.

# Script DeleteZip.txt var str folder, filelist, file cd $folder lf -r -n "*.zip" > $filelist while ($filelist <> "") do lex "1" $filelist > $file # Does this $file contain the word "backup" ? Do case independent search (-c option). if ( { sen -c "^backup^" $file } <= 0 ) system del ("/""+$file+"/"") endif done

El script está en biterscripting ( http://www.biterscripting.com ). Guarde el script en el archivo C: /Scripts/DeleteZip.txt. Ejecute el script como

script "C:/Scripts/DeleteZip.txt" folder("C:/testfolder")

Hará la operación de eliminación en la carpeta C: / carpeta de prueba y todas sus subcarpetas, en todos los niveles.


Solo haz esto, fácil

  1. botón de Windows + r
  2. escribe cmd y presiona enter
  3. Navega al directorio principal:
    escriba c: o d: (o la letra de la unidad a la que desea navegar)
  4. escriba dir para ver una lista de los contenidos de ese directorio ( dir /ah para ver los archivos ocultos)
  5. luego, para cambiar el directorio, escriba cd xxxx (xxxx = nombre del directorio)
  6. Repita los pasos 4 y 5 hasta llegar al directorio donde desea ejecutar el lote borrar
  7. luego escribe tu patrón. Algo como: del /S /ah *.jpg y presiona enter. Se ejecutará en todos los subdirectorios y eliminará todos los archivos visibles y ocultos que sean archivos .jpg

* es un comodín
/ S elimina de todas las subcarpetas
/ ah a = seleccionar archivos según el atributo, h = oculto

Ejemplo: para eliminar los molestos archivos .DS_Store que aparecen al copiar desde Mac a Windows, ejecute:

del /S /ah .DS_Store

o

del /S /ah ._*

que obtendrá todos los archivos ocultos ''duplicados'' que también se crean al copiar de Mac a Windows.


Un buen truco: ¡haga que los archivos que desea excluir sean de solo lectura !

DEL /S no eliminará el archivo de solo lectura.

La siguiente secuencia de comandos no hace exactamente lo que usted desea (consulte mis comentarios a continuación), pero le muestra cómo se pueden usar los archivos de solo lectura para evitar su eliminación.

@ECHO OFF :: This example supposes your first parameter is :: the relative path to the folder to be deleted :: and the second is the relative path (from the :: the target folder) of the one to be excluded :: Notice that this will only work if the folders :: are in the working drive, if not, you ll :: have to specify full paths IF "%1"=="" GOTO ERROR IF "%2"=="" GOTO ERROR IF NOT EXIST %1/NUL GOTO ERROR CD %1 IF NOT EXIST %2/NUL GOTO ERROR ECHO Starting up the deletion process ECHO. * Setting attributes attrib %1/*.mp3 -r -s -h > NUL attrib %2/*.mp3 +r > NUL ECHO. * Deleting files del /s %1/*.mp3 ECHO. * Reseting attributes attrib %2/*.mp3 -r > NUL ECHO. ECHO Operation completed! ECHO. GOTO END :ERROR ECHO Parameters: ECHO. Param1 -> target folder ECHO. Param2 -> folder to be ignored ECHO. GOTO END :END

Nota: puede adaptar esta secuencia de comandos para ignorar no solo una subcarpeta, sino todos los archivos de un tipo dado:

attrib /S *.xxx +r > NUL

le ayudará a excluir todos los archivos ''xxx'' del directorio actual y todos los subdirectorios (de ahí la opción /S ).

Nota: la parte " > NUL " es una redirección que a menudo se usa para ocultar la salida estándar, en lugar de mostrarla en la pantalla.
Puede ser peligroso si se usa con demasiada frecuencia (en un bucle grande con diferentes caminos involucrados, por ejemplo) ya que es un dispositivo , y como todos los dispositivos ( AUX , COMn , LPTn , NUL y PRN ):

  • abrir un dispositivo reclamará un identificador de archivo. Sin embargo, a diferencia de los archivos, los dispositivos nunca se cerrarán hasta que se reinicie.
  • cada dispositivo existe en cada directorio en cada unidad, por lo que si utilizó la redirección a NUL en, por ejemplo, C:/ y después de eso la usa nuevamente en C:/TEMP , perderá otro identificador de archivo.