PowerShell Eliminar archivo si existe

PowerShell Eliminar archivo si existe

Como cualquier otro shell, PowerShell es un poderoso lenguaje de shell y secuencias de comandos desarrollado por Microsoft. Originalmente diseñado para Windows, PowerShell ahora está disponible para todas las plataformas principales. A partir de PowerShell 6, se ha convertido en una aplicación gratuita y de código abierto.

Similar a cualquier otra secuencia de comandos, podemos usar PowerShell para automatizar de cosas básicas a avanzadas. En esta guía, consulte cómo usar PowerShell para eliminar un archivo si existe en Linux.

Verificar si existe un archivo

Similar a otros shells, PowerShell viene con su propio conjunto de comandos para realizar varias tareas, conocidas como cmdlets. Para probar una determinada declaración, en Bash, usaríamos la declaración de prueba de bash que verifica si un cierto argumento es verdadero o falso. La declaración de prueba es un mecanismo de uso general que puede calcular una amplia variedad de posibles comandos.

En el caso de PowerShell, sin embargo, hay cmdlets específicos para una tarea específica. Aquí, necesitaremos el camino de prueba para verificar si el archivo dado existe en la ubicación definida.

Aquí hay una simple demostración de prueba de prueba en acción.

$ Test -Path -Path

Por defecto, la prueba de prueba verificará si el elemento especificado existe en la ubicación descrita. Si existe, entonces devuelve el valor booleano "verdadero". De lo contrario, devuelve "falso".

Eliminar un archivo en PowerShell

En Linux, usaríamos el comando RM para eliminar un archivo o directorio. En el caso de PowerShell, usa el Cmdlet Retrow-item.

Consulte la documentación de Microsoft en remo.

Por ejemplo, para eliminar un archivo específico, ejecute el siguiente comando.

$ Eliminación de ítem

Para eliminar un directorio, necesitamos una opción adicional "-Curse".

$ Eliminación de ítem -Recurrir

Eliminar archivos si existe

Ahora, podemos combinar ambos métodos juntos y hacer un script simple que eliminará un archivo si existe en la ubicación de destino.

Primero, asigne una variable que mantenga el valor de la ruta del archivo.

$ $ FileLocation = ""

A continuación, use la prueba de prueba para verificar si el archivo existe en la ubicación.

$ Test-path $ filelocation

Dependiendo del valor de retorno de la prueba de prueba, podemos tomar la decisión de eliminar el archivo de destino. Podemos usar la declaración PowerShell if-else para determinar la acción.

if (test-path $ filename = true)
Eliminar el nombre de archivo $ nombre de archivo
ps

Agreguemos algunos mensajes adicionales para cada resultado posible.

if (test-path $ filelocation)
Eliminar el ítem $ fileLocation
Escritura-anfitrión "$ fileLocation se elimina"

demás
Escritura-anfitrión "$ fileLocation no existe"

Implementación en un script de PowerShell

Es hora de poner todos los códigos en un script de PowerShell adecuado. Similar a los scripts bash, podemos usar scripts de PowerShell para automatizar varias tareas utilizando cmdlets y comandos de PowerShell. En Linux, los guiones de PowerShell y Bash comparten similitudes estructurales.

Primero, necesitamos la ubicación de la ubicación ejecutable de PowerShell. Es importante, ya que será parte del shebang. Ejecutar el siguiente comando.

$ que PowerShell

Ahora podemos poner todas estas piezas en un solo guión de PowerShell. Un script de PowerShell viene con la extensión de archivo PS1.

$ nano eliminar-si-exist.PS1

Ahora, ingrese el código que hemos desarrollado hasta ahora.

$ FileLocation = ""
if (test-path $ filelocation)
Eliminar el ítem $ fileLocation
Escritura-anfitrión "$ fileLocation se elimina"

demás
Escritura-anfitrión "$ fileLocation no existe"

Guarde el archivo y cierre el editor. Marque el archivo como ejecutable.

$ chmod +x eliminar-si-exist.PS1

Finalmente, ejecute el script.

ps ./Eliminar-if-Exist.PS1

Situaciones especiales

Eliminar archivos de solo lectura

El cmdlet de remove item no puede eliminar archivos inexistentes o de solo lectura. En tal situación, podemos cambiar el comando eliminar el comando para eliminar, independientemente del permiso del archivo. La bandera "-verbose" imprimirá una salida paso a paso para una depuración más fácil.

$ Remove -item -verbose -force $ filelocation

Actualámoslo en el script.

$ FileLocation = ""
if (test-path $ filelocation)
Eliminar -Item -verbose -force $ filelocation
Escritura-anfitrión "$ fileLocation se elimina"

demás
Escritura-anfitrión "$ fileLocation no existe"

Pensamiento final

Esta guía muestra cómo verificar la existencia de un archivo y, en función del resultado, cómo eliminarlo utilizando el cmdlet de remo. Si el archivo es de solo lectura o permiso denegado, entonces podemos usar el parámetro "-force" para eliminarlo con fuerza. Finalmente, implementamos todo el script.

Esta es una forma muy simple pero efectiva de eliminar un archivo/directorio de elección. Sin embargo, como se demostró, este método general es capaz de eliminar solo un elemento. Es posible obtener la lista de archivos de un directorio y usar un bucle para eliminarlos de forma incremental.

Computación feliz!