¿Cómo eliminar archivos usando PowerShell Remove-Item? – 2xsoftware

PowerShell es un poderoso lenguaje de secuencias de comandos que permite a los usuarios automatizar tareas administrativas en sistemas Windows. Una de las operaciones más comunes realizadas en PowerShell es la eliminación de archivos. El cmdlet Remove-Item proporciona una manera simple y eficiente de eliminar archivos mediante PowerShell. En esta publicación de blog, exploraremos el uso del cmdlet Remove-Item y proporcionaremos varios ejemplos para demostrar sus capacidades.

Alias ​​de eliminación de elementos de PowerShell

Aunque la mejor práctica cuando se crean secuencias de comandos en PowerShell es usar el nombre completo del cmdlet, a veces puede ser conveniente usar sus alias abreviados, especialmente al interactuar con los comandos.

El cmdlet Remove-Item de PowerShell tiene algunos alias que debe conocer. Para encontrarlos, ejecute el siguiente comando.

Get-Alias -Definition Remove-Item

Según el resultado, los alias del cmdlet Remove-Item son del, borrar, rd, Rhode Island, rmy rmdir.

Ejecutar cualquiera de estos alias significa que está ejecutando el cmdlet Remove-Item de PowerShell.

powershell eliminar elemento

Uso básico

El cmdlet Remove-Item le permite eliminar archivos especificando sus rutas. He aquí un ejemplo básico:

Remove-Item -Path .dummy_files4k2h8ux1z9.txt

En este ejemplo, usamos el -Camino parámetro para especificar la ruta del archivo que queremos eliminar. Reemplazar «.dummy_files4k2h8ux1z9.txt” con la ruta real del archivo que desea eliminar. Este comando eliminará el archivo especificado.

Eliminar varios archivos

Remove-Item también admite la eliminación de varios archivos a la vez. Puede utilizar comodines para hacer coincidir varios archivos en función de un patrón.

Borrar todos los archivos

Por ejemplo, puede ejecutar el siguiente comando si desea eliminar todos los archivos en una carpeta determinada. El comodín”*” representa todos los nombres de archivo en la carpeta. El -Verboso el interruptor solo se agrega para devolver el Remover el artículo estado.

Remove-Item -Path ".dummy_files*" -Verbose

eliminar carpeta powershell

Eliminar archivos con extensiones específicas

En mi carpeta llamada .archivos_dummytengo varios archivos con diferentes extensiones de archivo.

Get-ChildItem .dummy_files | Group-Object Extension

powershell eliminar archivo

¿Qué sucede si desea eliminar archivos con “.TXT¿Solo extensiones? El cmdlet Remove-Item de PowerShell también le permite hacerlo.

Remove-Item -Path .dummy_files*.txt -Verbose

Como se muestra a continuación, el comando solo eliminó los archivos que coincidían con el *.TXT extensión.

eliminar carpeta powershell

Otra forma de eliminar extensiones de archivo específicas es mediante el -Incluir parámetro. Este parámetro le permite especificar varios valores e incluir varias extensiones de nombre de archivo. Por ejemplo, el siguiente comando elimina todos *.TXT y *.etl archivos

Remove-Item -Path .dummy_files* -Include *.txt, *.etl -Verbose

powershell eliminar carpeta y contenido

Eliminar archivos excluyendo extensiones específicas

Por otro lado, también puede eliminar todos los archivos y excluir archivos según un patrón o extensiones. Puede hacerlo utilizando el -Excluir parámetro. Por ejemplo, el siguiente comando elimina todos los archivos de la carpeta excepto aquellos con *.registro y *.jpg extensiones

Remove-Item -Path .dummy_files* -Exclude *.log, *.jpg -Verbose

El resultado a continuación muestra que el comando eliminó todos los archivos excepto aquellos con *.registro y *.jpg extensiones

eliminar carpeta powershell

Eliminar carpeta y contenido recursivamente

La eliminación de una carpeta y todo su contenido de forma recursiva también se puede realizar con el cmdlet Remove-Item de PowerShell a través de la -Recurso cambiar.

Por ejemplo, mi carpeta. .archivos_dummy tiene una estructura de carpetas como esta:

tree .dummy_files /F

La carpeta superior, “archivos_dummy,” tiene una subcarpeta llamada “sub1”, que tiene otra subcarpeta llamada “sub2”. Cada carpeta tiene archivos debajo de ellos.

powershell elimina todos los archivos en la carpeta

Para eliminar las subcarpetas y todo su contenido, ejecute el siguiente comando.

Remove-Item -Path .dummy_files* -Recurse -Verbose

Los resultados muestran dos operaciones: Eliminar directorio y Remover archivo.

powershell forzar la eliminación de carpetas

Observe que la carpeta superior “archivos_dummy” no fue eliminado. La razón es que la ruta que especificamos es «.archivos_dummy*” – que indica que se eliminen los elementos debajo de la ruta dada.

Si queremos incluir la carpeta superior en la eliminación, elimine el «*” del camino.

Remove-Item -Path .dummy_files -Recurse -Verbose

Ahora puedes ver la carpeta superior “archivos_dummy” también se elimina.

powershell eliminar carpeta y todo el contenido

Script de PowerShell para eliminar archivos anteriores a una fecha determinada

La eliminación de archivos es una tarea estándar de administración del sistema. Esta tarea generalmente se realiza con archivos antiguos que ya no es necesario que estén en el sistema. En esta sección, escribiremos un script inicial de PowerShell para eliminar archivos anteriores a una fecha determinada.

Una frase simple

Suponga que desea eliminar archivos que tienen más de siete días. El primer paso es inicializar una variable para mantener esta fecha.

$Before = (Get-Date).AddDays(-7)

A continuación, especifique la ruta para eliminar los archivos en otra variable.

$Path = ".dummy_files"

Recupere la lista de archivos que coincidan con la condición «antes de la fecha» usando el Obtener elemento secundario cmdlet y canalice el resultado al Remover el artículo cmdlet.

Get-ChildItem -Path $Path -Recurse | ` 
Where-Object { $_.CreationTime -lt $Before } | ` 
Remove-Item -Force -Verbose

eliminar carpeta de windows powershell

Ese script es la forma más simple que puede implementar. Pero sería mejor mejorar el script, como aceptar parámetros y devolver resultados.

Mejorando el guión

Copie el código de abajo y guárdelo como DeleteFiles.ps1 en su computadora.

# DeleteFiles.ps1 
param ( 
[Parameter(Mandatory)] 
[string] 
$Path, 
[Parameter(Mandatory)] 
[DateTime] 
$BeforeDate, 
[Parameter()] 
[switch] 
$Delete 
) 

$files = Get-ChildItem -Path $Path | Where-Object { $_.CreationTime -lt $BeforeDate } | 
Select-Object FullName, CreationTime, @{ n = 'Age'; e = { ($(New-TimeSpan -Start $($_.CreationTime) -End (Get-Date))).Days } } 
$files | Add-Member -Name Deleted -MemberType NoteProperty -Value $false 

foreach ($item in $files) { 
if ($PSBoundParameters.ContainsKey('Delete')) { 
try { 
Remove-Item -Path $($item.FullName) -Force -ErrorAction Stop 
$item.Deleted = $true 
} 
catch { 
$_.Exception.Message | Out-Default 
$item.Deleted = $false 
} 
} 
return $item 
}

La secuencia de comandos, «Eliminar archivos.ps1”, está diseñado para eliminar archivos según criterios específicos. Repasemos el script y comprendamos su funcionalidad paso a paso:

  • El script espera tres parámetros:
    • $ruta: especifica la ruta al directorio donde se encuentran los archivos. Está marcado como obligatorio, lo que significa que debe proporcionarse al ejecutar el script.
    • $Antes de la fecha: especifica la fecha límite. Los archivos creados antes de esta fecha se considerarán para su eliminación. También está marcado como obligatorio.
    • $Borrar: Este es un parámetro de interruptor. Si se proporciona, indica que los archivos deben eliminarse. No es obligatorio incluir este parámetro al ejecutar el script.
  • Get-ChildItem y Filtrado:
    • El guión utiliza el Obtener elemento secundario cmdlet para recuperar los archivos en el directorio especificado ($ruta). Los resultados se canalizan a Donde-Objeto para filtrar los archivos según la fecha de creación. Solo los archivos con una hora de creación anterior a la $Antes de la fecha se selecciona el valor.
  • Selección y cálculo de información adicional:
    • Después de filtrar los archivos, el script usa Seleccionar objeto para elegir propiedades específicas de los archivos: Nombre completo (ruta completa al archivo), Tiempo de creación (la marca de tiempo de creación del archivo) y una propiedad calculada denominada Edad.
    • El Edad propiedad calcula los días entre la hora de creación del archivo y la fecha actual usando el Intervalo de tiempo nuevo cmdlet.
  • Agregar una propiedad personalizada:
    • El guión utiliza el Añadir miembro cmdlet para agregar una propiedad personalizada llamada Eliminado a cada objeto de archivo. De forma predeterminada, su valor se establece en $falso para todos los archivos.
  • Bucle a través de archivos y eliminación (si se especifica):
    • Luego, el script ingresa un para cada bucle para iterar sobre cada objeto de archivo.
    • Si el $Borrar se proporciona el parámetro de cambio cuando se ejecuta el script, el script intenta eliminar el archivo usando Remover el artículo.
    • El Fuerza el parámetro se usa para eliminar archivos a la fuerza;
    • Y ErrorAcción Detener asegura que los errores durante la eliminación serán detectados y procesados.
  • Manejo de excepciones:
    • Si ocurre una excepción durante el proceso de eliminación, el mensaje de error se muestra usando Fuera de defectoy el Eliminado propiedad del objeto de archivo se establece en $falso.
  • Devolución de objetos de archivo:
    • Finalmente, el script llama al $artículo variable con cada bucle. Cada objeto de archivo se devolverá individualmente cuando se ejecute el script.

Este script le permite recuperar archivos en un directorio específico creado antes de una fecha específica. Si el $Borrar se incluye el parámetro switch, intentará eliminar esos archivos y brindará comentarios sobre si cada uno se eliminó correctamente.

Ejecutar el guión

Para ejecutar el script, ejecute el siguiente comando. Este comando ejecutará el “Eliminar archivos.ps1” script con los parámetros especificados. Apuntará al “archivos_dummy” directorio, considere los archivos creados más de hace seis díasy elimine esos archivos.

.DeleteFiles.ps1 -Path .dummy_files -BeforeDate (Get-Date).AddDays(-6) -Delete

eliminar archivo de windows powershell

Conclusión

El cmdlet Remove-Item de PowerShell proporciona una forma potente y eficiente de eliminar archivos y carpetas. Con su amplia gama de opciones y flexibilidad, puede eliminar rápidamente archivos individuales y directorios completos o filtrar archivos según criterios específicos. Al comprender los diferentes parámetros y la sintaxis del cmdlet Remove-Item, puede administrar sus archivos con confianza y mantener su sistema organizado.

Recuerde tener cuidado al usar PowerShell para eliminar archivos, ya que los elimina permanentemente de su sistema. Siempre verifique dos veces sus comandos y verifique los elementos que desea eliminar. Además, asegúrese de tener los permisos necesarios para eliminar archivos y carpetas.

El cmdlet Remove-Item de PowerShell puede optimizar sus tareas de administración de archivos y automatizar los procesos de eliminación, ahorrándole tiempo y esfuerzo. Ya sea administrador del sistema, desarrollador o usuario avanzado, dominar el cmdlet Remove-Item de PowerShell es una habilidad valiosa que debe tener en su conjunto de herramientas.

Valora este artculo post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *