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

Powershell

PowerShell es un potente 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 forma sencilla y eficaz de eliminar archivos mediante PowerShell. En esta publicación de blog, exploraremos el uso del cmdlet Remove-Item y brindaremos varios ejemplos para demostrar sus capacidades.

Alias ​​de eliminación de elementos de PowerShell

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

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

Get-Alias -Definition Remove-Item

Según el resultado, los alias de cmdlet Remove-Item son del, borrar, tercero, Rhode Island, habitacióny 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. Aquí hay un ejemplo básico:

Remove-Item -Path .\dummy_files\4k2h8ux1z9.txt

En este ejemplo, utilizamos el -Camino parámetro para especificar la ruta del archivo que queremos eliminar. Reemplazar «.\archivos_dummy\4k2h8ux1z9.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 según 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 archivos 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 de powershell

Eliminar archivos con extensiones específicas

En mi carpeta llamada .\archivos_dummyTengo varios archivos con diferentes extensiones.

Get-ChildItem .\dummy_files | Group-Object Extension

powershell eliminar archivo

¿Qué pasa si desea eliminar archivos con «.TXT¿Solo extensiones? El cmdlet Remove-Item de PowerShell también le permite hacer eso.

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 de powershell

Otra forma de eliminar extensiones de archivos específicas es mediante el uso del -Incluir parámetro. Este parámetro le permite especificar múltiples valores e incluir múltiples 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. Puedes hacerlo usando 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 de forma recursiva

También se puede eliminar una carpeta y todo su contenido de forma recursiva con el cmdlet Remove-Item de PowerShell a través del -recurse cambiar.

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

tree .\dummy_files\ /F

La carpeta superior, «archivos_ficticios,» tiene una subcarpeta llamada «sub1”, que tiene otra subcarpeta llamada “sub2”. Cada carpeta tiene archivos debajo de ellas.

powershell elimina todos los archivos de 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 fuerza eliminar carpeta

Observe que la carpeta superior «archivos_ficticios”no fue eliminado. La razón es que la ruta que especificamos es «.\archivos_dummy\*”- que indica eliminar 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_ficticios”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 simple frase

Supongamos que desea eliminar archivos que tienen más de siete días. El primer paso es inicializar una variable para contener 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 coinciden con la condición «antes de la fecha» usando el Get-ChildItem cmdlet y canalizar 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 puedes implementar. Pero sería mejor mejorar el script, como aceptar parámetros y devolver resultados.

Mejorando el guión

Copie el código a continuación y guárdelo como DeleteFiles.ps1 en tu 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 eliminados. También está marcado como obligatorio.
    • $Eliminar: Este es un parámetro de cambio. 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 Get-ChildItem cmdlet para recuperar los archivos en el directorio especificado ($ruta). Los resultados se envían a Donde-Objeto para filtrar los archivos según la fecha de creación. Sólo archivos con una hora de creación anterior a la $antes de la fecha Se selecciona el valor.
  • Seleccionar y calcular información adicional:
    • Después de filtrar los archivos, el script utiliza 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 La propiedad calcula los días entre la hora de creación del archivo y la fecha actual utilizando el Nuevo intervalo de tiempo cmdlet.
  • Agregar una propiedad personalizada:
  • Recorrer archivos y eliminarlos (si se especifica):
    • El script luego ingresa un para cada bucle para iterar sobre cada objeto de archivo.
    • Si el $Eliminar El parámetro switch se proporciona al ejecutar el script, el script intenta eliminar el archivo usando Remover el artículo.
    • El Fuerza El parámetro se utiliza para eliminar archivos con fuerza;
    • Y ErrorAcción Detener garantiza que los errores durante la eliminación serán detectados y procesados.
  • Manejo de excepciones:
    • Si se produce una excepción durante el proceso de eliminación, el mensaje de error se muestra usando Fuera de defaulty el Eliminado La propiedad del objeto de archivo se establece en $falso.
  • Devolver objetos de archivo:
    • Finalmente, el guión 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 $Eliminar Si se incluye el parámetro switch, intentará eliminar esos archivos y proporcionará información sobre si cada uno se eliminó correctamente.

Ejecutando 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á a “archivos_ficticios”, considere los archivos creados hace más de hace seis diasy 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 sintaxis del cmdlet Remove-Item, podrá administrar sus archivos con confianza y mantener su sistema organizado.

Recuerde tener cuidado al utilizar PowerShell para eliminar archivos, ya que los elimina permanentemente de su sistema. Siempre verifique 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 de sistemas, desarrollador o usuario avanzado, dominar el cmdlet Remove-Item de PowerShell es una habilidad valiosa que debe tener en su kit de herramientas.

4/5 - (112 votos)

Deja una respuesta

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