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
$sourceFolder
y$destFolder
. -
A continuación, usaremos el comando
Get-ChildItem
para obtener todos los archivos de la carpeta y colocarlos en una lista de matriz. El comandoGet-ChildItem
tambié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-Item
para eliminar el archivo ya existente. Como puede ver, hemos utilizado un parámetro llamado-ErrorAction
que 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 elemento
si 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
- Almacene el contenido del archivo de texto en variable usando PowerShell
- Consulta de la última hora de escritura del archivo en PowerShell
- Desbloquear archivos usando PowerShell
- Dividir archivo grande en PowerShell
- Leer archivo CSV línea por línea en PowerShell
- Buscar archivos con extensión en PowerShell