¿Cómo copiar y cambiar el nombre de archivos en PowerShell?
En este artículo, explicaré varios métodos para copiar y cambiar el nombre de archivos usando PowerShell, proporcionando ejemplos y scripts completos para ayudarle a comprender mejor.
Para copiar y cambiar el nombre de un archivo en PowerShell, puede utilizar una combinación de los cmdlets Copy-Item y Rename-Item. Primero, use Copy-Item para copiar el archivo en la ubicación deseada y luego use Rename-Item para cambiar el nombre del archivo recién copiado. Por ejemplo:
Copy-Item -Path "C:\Source\example.txt" -Destination "C:\Destination"
Rename-Item -Path "C:\Destination\example.txt" -NewName "newexample.txt"Este script copiará example.txt de la carpeta Source a la carpeta Destino y luego le cambiará el nombre a newexample.txt. .
Copiar archivos con PowerShell
Antes de comenzar a cambiar el nombre, comencemos con los conceptos básicos de la copia de archivos. El cmdlet principal utilizado para copiar archivos en PowerShell es Copy-Item. Este cmdlet le permite copiar archivos y directorios a una nueva ubicación.
Comando de copia básico
A continuación se muestra un ejemplo sencillo de cómo copiar un solo archivo de una ubicación a otra:
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination\file.txt"Copiar varios archivos
Para copiar varios archivos en PowerShell, puede utilizar comodines:
Copy-Item -Path "C:\Source\*.txt" -Destination "C:\Destination"Este comando copiará todos los archivos .txt del directorio Source al directorio Destino en PowerShell.
Preservar la estructura de carpetas
Si desea copiar un directorio completo y conservar la estructura de carpetas, puede usar el parámetro -Recurse de PowerShell:
Copy-Item -Path "C:\SourceFolder" -Destination "C:\DestinationFolder" -RecurseCambiar el nombre de archivos con PowerShell
Para cambiar el nombre de un archivo en PowerShell, utilice el cmdlet Rename-Item. Este cmdlet cambia el nombre de un único archivo o carpeta.
Comando básico de cambio de nombre
A continuación se muestra un ejemplo de cómo cambiar el nombre de un archivo:
Rename-Item -Path "C:\Source\oldname.txt" -NewName "newname.txt"Copie y cambie el nombre de archivos en un solo paso
Si bien no existe un único cmdlet que copie y cambie el nombre de un archivo en PowerShell simultáneamente, puede combinar Copy-Item con Rename-Item en un script para realizar ambas acciones juntas. .
Usando un bloque de script
Aquí hay un script de ejemplo que copia y cambia el nombre de un archivo en PowerShell:
$fileToCopy = "C:\Source\file.txt"
$destinationFolder = "C:\Destination"
$newFileName = "newfile.txt"
Copy-Item -Path $fileToCopy -Destination $destinationFolder
Rename-Item -Path (Join-Path $destinationFolder (Split-Path $fileToCopy -Leaf)) -NewName $newFileNameEste script de PowerShell toma un archivo de origen, lo copia en el destino y luego cambia el nombre del archivo copiado al nuevo nombre que especifique.
Ejecuté el código usando código VS y puedes ver el resultado en la siguiente captura de pantalla:
Manejo de extensiones de archivos
Si necesita mantener la extensión del archivo y solo cambiar el nombre base, puede usar las propiedades BaseName y Extension de un objeto FileInfo:
$fileToCopy = "C:\Source\file.txt"
$destinationFolder = "C:\Destination"
$newBaseName = "newfile"
$fileInfo = Get-Item $fileToCopy
$newFileName = $newBaseName + $fileInfo.Extension
Copy-Item -Path $fileToCopy -Destination $destinationFolder
Rename-Item -Path (Join-Path $destinationFolder $fileInfo.Name) -NewName $newFileNameTécnicas avanzadas de copia y cambio de nombre en PowerShell
A veces, es posible que necesites copiar y cambiar el nombre de los archivos de una manera más compleja, como agregar marcas de tiempo o incrementar números a los nombres de los archivos.
Agregar marcas de tiempo a los nombres de archivos
Para agregar una marca de tiempo al nombre de un archivo copiado, puede usar el cmdlet Get-Date:
$fileToCopy = "C:\Source\file.txt"
$destinationFolder = "C:\Destination"
$timestamp = Get-Date -Format "yyyyMMddHHmmss"
$newFileName = "file_$timestamp.txt"
Copy-Item -Path $fileToCopy -Destination $destinationFolder
Rename-Item -Path (Join-Path $destinationFolder (Split-Path $fileToCopy -Leaf)) -NewName $newFileNameIncrementar nombres de archivos
Si está copiando un archivo a un directorio donde existen archivos con nombres similares, es posible que desee incrementar el nombre del archivo:
$fileToCopy = "C:\Source\file.txt"
$destinationFolder = "C:\Destination"
$baseName = "file"
$extension = ".txt"
$index = 1
do {
$newFileName = "$($baseName)_$($index)$($extension)"
$index++
} while (Test-Path (Join-Path $destinationFolder $newFileName))
Copy-Item -Path $fileToCopy -Destination $destinationFolder
Rename-Item -Path (Join-Path $destinationFolder (Split-Path $fileToCopy -Leaf)) -NewName $newFileNameEste script seguirá incrementando el índice hasta que encuentre un nombre de archivo que no existe en la carpeta de destino.
Conclusión
En este tutorial de PowerShell, he explicado cómo copiar y cambiar el nombre de archivos en PowerShell usando los cmdlets Copy-Item y Rename-Item.
