Búsqueda de sitios web

PowerShell: cómo omitir archivos a los que no se puede acceder


Ocasionalmente, en PowerShell puede recibir un mensaje de error que le indica que no se puede acceder a un archivo en particular porque otro proceso lo está utilizando actualmente.

La forma más sencilla de suprimir este error es utilizar -ErrorAction SilentlyContinue, que le indica a PowerShell que continúe la tarea de forma silenciosa sin mostrar un error.

A continuación se muestra una forma común de utilizar esta sintaxis en la práctica:

Remove-Item "C:\my\path\*" -Recurse -Force -ErrorAction SilentlyContinue

Este ejemplo particular elimina todos los archivos en la ruta que especificamos. Si se está utilizando algún archivo actualmente, PowerShell simplemente los omitirá sin mostrar un mensaje de error.

El siguiente ejemplo muestra cómo utilizar esta sintaxis en la práctica.

Ejemplo: cómo omitir archivos a los que no se puede acceder en PowerShell

Supongamos que nuestro directorio actual tiene la siguiente ruta:

C:\Users\bobbi\data1

Podemos usar el cmdlet Get-ChildItem para ver todos los archivos y carpetas en este directorio:

Podemos ver que hay tres archivos en este directorio:

  • regiones.txt
  • lista.csv
  • horarios.csv

Supongamos que nos gustaría eliminar todos los archivos de este directorio pero supongamos que el archivo schedules.csv está actualmente abierto y en uso en nuestra computadora.

Supongamos que intentamos utilizar el cmdlet Remove-Item con la siguiente sintaxis para eliminar cada uno de los archivos del directorio:

Remove-Item "C:\Users\bobbi\data1\*" -Recurse -Force

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Recibimos un mensaje de error que nos indica que no se puede acceder a schedules.csv porque está siendo utilizado por otro proceso.

Para omitir este archivo al eliminar todos los archivos en el directorio actual, podemos agregar el comando -ErrorAction SilentlyContinue de la siguiente manera:

Remove-Item "C:\Users\bobbi\data1\*" -Recurse -Force -ErrorAction SilentlyContinue

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Tenga en cuenta que cuando ejecutamos el cmdlet Get-ChildItem nuevamente podemos ver que todos los archivos excepto schedules.csv se han eliminado y esta vez no recibimos ningún mensaje de error.

Nota: Puede encontrar la documentación completa para -ErrorAction en PowerShell aquí.

Artículos relacionados