HOWTO · PowerShell

Mover archivos y carpetas con PowerShell

Aprende a comprobar rutas, crear archivos y carpetas y moverlos con PowerShell.

En esta página

Usa el cmdlet Move-Item de PowerShell para mover un archivo o una carpeta a su directorio principal o a otro destino. Para que el traslado sea fiable, comprueba las rutas con Test-Path, crea el destino si falta con New-Item y, después, mueve el elemento. También puedes adaptar estos pasos para mover un conjunto seleccionado de archivos.

Comprobar si existe un archivo o una carpeta con PowerShell

Test-Path devuelve $true si existe un archivo o directorio en la ruta indicada y $false en caso contrario. Sustituye la ruta de ejemplo por la del archivo o la carpeta que quieras comprobar. Este ejemplo autónomo crea primero un archivo de prueba y luego verifica si existe:

$sampleDir = Join-Path ([System.IO.Path]::GetTempPath()) ([guid]::NewGuid().ToString())
New-Item -ItemType Directory -Path $sampleDir | Out-Null
$sampleFile = Join-Path $sampleDir 'test.txt'
New-Item -ItemType File -Path $sampleFile | Out-Null
Test-Path -Path $sampleFile

Crear archivos y carpetas con PowerShell

Usa New-Item con -ItemType Directory para crear una carpeta o con -ItemType File para crear un archivo. -Path especifica la ruta completa, incluido el nombre del elemento nuevo. Este ejemplo crea ambos dentro de un directorio temporal:

$sampleDir = Join-Path ([System.IO.Path]::GetTempPath()) ([guid]::NewGuid().ToString())
New-Item -ItemType Directory -Path $sampleDir | Out-Null
$folderPath = Join-Path $sampleDir 'PS'
New-Item -ItemType Directory -Path $folderPath | Out-Null
$filePath = Join-Path $folderPath 'TestFile.txt'
New-Item -ItemType File -Path $filePath | Out-Null
Test-Path -Path $filePath

Mover archivos y carpetas con PowerShell

Move-Item mueve un archivo o una carpeta desde la ruta indicada con -Path hasta la ubicación indicada con -Destination. El destino puede ser .., que representa el directorio principal, u otra carpeta. El destino debe existir: Move-Item no crea los destinos que faltan. En el siguiente ejemplo autónomo se crea un archivo y una carpeta, se mueve el archivo a su directorio principal, se crea un destino personalizado si hace falta y luego se mueve allí la carpeta. El ejemplo muestra las dos comprobaciones de ruta como valores booleanos.

$root = Join-Path ([System.IO.Path]::GetTempPath()) ([guid]::NewGuid().ToString())
$sourceDir = Join-Path $root 'Source'
New-Item -ItemType Directory -Path $sourceDir | Out-Null
$filePath = Join-Path $sourceDir 'TestFile.txt'
New-Item -ItemType File -Path $filePath | Out-Null
$folderPath = Join-Path $sourceDir 'PSScripts'
New-Item -ItemType Directory -Path $folderPath | Out-Null

Push-Location $sourceDir
Move-Item -Path 'TestFile.txt' -Destination '..'
Pop-Location
Test-Path -Path (Join-Path $root 'TestFile.txt')

$destination = Join-Path $root 'Archive'
if (-not (Test-Path -Path $destination)) {
    New-Item -ItemType Directory -Path $destination | Out-Null
}
Move-Item -Path $folderPath -Destination $destination
Test-Path -Path (Join-Path $destination 'PSScripts')