Elimine todos los archivos de la carpeta excepto una extensión (por ejemplo, .idf) utilizando un archivo por lotes

Elimine todos los archivos de la carpeta excepto una extensión (por ejemplo, .idf) utilizando un archivo por lotes

Mi código actual para eliminar todos los archivos en una carpeta de más de 2 días es:

forfiles /p "C:\Test" /s /m *.* /c "cmd /c Del /F /Q @path" /d 2

Hay uno.idfarchivo entre todos los demás archivos. Quiero eliminar todos los archivos excepto el archivo .idf. ¿Qué cambio para que el código actual ignore el archivo? Si no es posible, cualquier comando nuevo será útil.

Respuesta1

Para mejorar un poco su enfoque:

  • Mantener forfilescon /d -2el cambio para tratar sólo archivos más antiguos.
  • utilizar for %Gcon if /I [%~xG] neq [.idf]para omitir archivos con .idfextensión
  • duplicar todo %si se ejecuta desde un archivo por lotes: %%Gen lugar de %Getc.
  • eliminar @echotan pronto como se haya depurado.

El comando:

forfiles /p "C:\Test" /s /m *.* /c "cmd /c for %G in (@path) do @if /I [%~xG] neq [.idf] @echo del /F /Q %G" /d -2

Recursos(lectura obligatoria):

información relacionada