Búsqueda de sitios web

¿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" -Recurse

Cambiar 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 $newFileName

Este 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 $newFileName

Té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 $newFileName

Incrementar 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 $newFileName

Este 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.

Artículos relacionados