Quitar elemento si el archivo existe en PowerShell
Como administrador, uno de nuestros posibles deberes probablemente sea administrar archivos. Esta situación suele ocurrir si estamos administrando varios servidores de archivos.
Una tarea específica que podemos hacer dentro del servidor es copiar archivos en una ubicación diferente para hacer quizás una copia o espejo del archivo de una empresa.
Sin embargo, ¿y si necesitamos realizar copias masivas a la vez? Existe la posibilidad de que también podamos encontrar archivos existentes en la ubicación de destino durante la copia masiva.
Este artículo explicará cómo copiar archivos de forma masiva, comprobar si existen en la carpeta de destino y eliminarlos mediante PowerShell.
Eliminar elemento si el archivo existe después de Copiar elemento en PowerShell
Para este artículo, nos centraremos y utilizaremos los comandos Get-ChildItem, Remove-Item y Copy-Item. Compartiremos el bloque de secuencias de comandos donde podemos copiar archivos de forma masiva y verificar si existen en la carpeta de destino y, si existe, el archivo se eliminará y se sobrescribirá.
Por lo tanto, declare sus carpetas de origen y destino como se muestra a continuación, y profundicemos y discutamos el bloque de secuencias de comandos en detalle.
Código de ejemplo:
$sourceFolder = "C:\Temp"
$destFolder = "C:\PS"
Get-ChildItem $sourceFolder\Scripts -Recurse | %{
Remove-Item $_ -ErrorAction Ignore
Copy-Item -Path $_.FullName -Destination $destFolder
}
-
Primero, declare sus carpetas de origen y destino dentro de cada variable como nuestras variables
$sourceFoldery$destFolder. -
A continuación, usaremos el comando
Get-ChildItempara obtener todos los archivos de la carpeta y colocarlos en una lista de matriz. El comandoGet-ChildItemtambién puede atender a varias carpetas.Para comprobar si hay varias carpetas, inserte una coma (
,) entre destinos como el fragmento de código siguiente.Get-ChildItem $sourceFolder\Scripts, $sourceFolder\Test
El parámetro `-Recurse` se utiliza para buscar archivos que también están dentro de la subcarpeta de la carpeta de origen principal.
-
Luego usamos el comando
Remove-Itempara eliminar el archivo ya existente. Como puede ver, hemos utilizado un parámetro llamado-ErrorActionque establecerá nuestra preferencia de acción si se produce un error.En este caso, el archivo no existe en el archivo de destino si se produce un error. Nuestra preferencia de acción está establecida en
Ignorar, que ignorará el comandoEliminar elementosi se produce un error y continuará la ejecución del script en esa línea.Alternativamente, podemos acortar esta línea de comando usando alias como el fragmento de código de ejemplo a continuación.
rm yourfile.zip -ea ig
Copiar archivos con el comando Mover elemento
También podemos utilizar el comando Move-Item como alternativa a Copy-Item. El comando Mover elemento comprueba automáticamente si el archivo existe en la carpeta de destino.
El comando omitirá el archivo si el valor es true. Esto significa que podemos eliminar la línea de comando Remove-Item y tener un script más corto que se parecerá al fragmento de código a continuación.
$sourceFolder = "C:\Temp"
$destFolder = "C:\PS"
Get-ChildItem $sourceFolder\Scripts -Recurse | %{
Move-Item -Path $_.FullName -Destination $destFolder
}
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArtículo relacionado - PowerShell File
- Cómo crear un archivo de texto usando Windows PowerShell
- Cómo obtener la versión del archivo en PowerShell
- Cómo subir archivos con FTP en PowerShell
- Cómo agregar datos a un archivo usando PowerShell
- Cómo almacenar el contenido de un archivo de texto en una variable usando PowerShell
- Consulta de la última hora de escritura del archivo en PowerShell
