Cambio de nombre de archivos y carpetas con PowerShell

  1. Filtrado de archivos y carpetas en PowerShell
  2. Cambio de nombre de archivos en PowerShell
Cambio de nombre de archivos y carpetas con PowerShell

Cambiar el nombre de archivos y carpetas es probablemente una de las funcionalidades básicas del sistema operativo Windows. Podemos cambiar el nombre de archivos y carpetas a través de la GUI haciendo clic derecho en un archivo y seleccionando "Cambiar nombre".

Si necesitamos cambiar el nombre de varios archivos, es más eficiente abordarlo a través de la automatización. Este artículo analizará el filtrado de archivos y carpetas y cómo cambiar el nombre de los archivos y cambiar la extensión del archivo mediante Windows PowerShell.

Filtrado de archivos y carpetas en PowerShell

El comando Get-ChildItem de Windows PowerShell obtiene los elementos del sistema operativo en un directorio o ubicación específicos. Además, la ubicación especificada en el cmdlet puede ser un registro, un sistema de archivos o un almacén de certificados.

Centraremos nuestros ejemplos más en archivos y carpetas para este artículo.

Sintaxis:

Get-ChildItem -Path C:\PS\Temp

En el comando anterior, el cmdlet Get-ChildItem obtiene todos los elementos del valor proporcionado del parámetro -Path. El cmdlet Get-ChildItem cuando se ejecuta, muestra archivos, directorios con sus propiedades Mode, LastWriteTime, Length (tamaño de archivo) y Name en la consola de PowerShell.

Producción :

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----l        18/01/2022   8:52 pm                Microsoft
d----l        20/12/2021   3:36 pm                Cisco
-a---l        30/12/2021   3:24 pm          (151) backup_phrase.txt
-a---l        17/06/2021   3:23 am       (410049) CEF17501168.pdf
-a---l        16/05/2021   3:32 am          (677) default.txt
-a---l        21/08/2020   9:06 am         (2240) test.csv
-a---l        26/06/2021   8:25 am        (63399) banner.jpg
-a---l        09/03/2021  10:48 pm          (143) inventory.xlsx
<SNIP>

Usando el parámetro -Filter, podemos acotar nuestros resultados de búsqueda con una sola expresión. También podemos usar el alias gci como sustituto del comando Get-ChildItem para una experiencia de escritura más fluida.

Código de ejemplo:

gci -Filter C:\PS\Temp\* -Filter *.xlsx

Producción :

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---l        09/03/2021  10:48 pm          (143) inventory.xlsx
<SNIP>

Podemos utilizar los parámetros -Include, que aceptan múltiples condiciones. Por lo tanto, podemos decir que el parámetro -Include es mejor que el parámetro -Filter.

Sin embargo, el parámetro -Include requiere que el parámetro -Path esté presente en la expresión.

Código de ejemplo:

gci -Path C:\PS\Temp\* -File -Include CEF*.pdf, *.xlsx, *.txt

Producción :

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---l        17/06/2021   3:23 am       (410049) CEF17501168.pdf
-a---l        16/05/2021   3:32 am          (677) default.txt
-a---l        09/03/2021  10:48 pm          (143) inventory.xlsx
<SNIP>

La ruta debe incluir un asterisco comodín (*) al final cuando se utiliza el parámetro de cambio ‘-Incluir’. Este comodín indica que estamos consultando todos los elementos de la ruta secundaria con la extensión específica definida en el parámetro -Incluir.

Cambio de nombre de archivos en PowerShell

El comando de cambio de nombre de Windows PowerShell, Rename-Item, funciona para cambiar el nombre de los nombres de archivo de los elementos del sistema operativo, como archivos y carpetas. Por ejemplo, cambiaremos el nombre TestFile.txt a RenamedFile.txt.

Código de ejemplo:

Rename-Item -Path '.\TestFile.txt' -NewName 'RenamedFile.txt'
gci -Filter 'RenamedFile.txt'

Ahora, si vamos a iniciar un comando gci para filtrar un elemento específico, debería darnos la verificación de que el archivo ha sido renombrado.

Producción :

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        12/10/2021  11:38 PM           2982 RenamedFile.txt

El cmdlet Rename-Item no solo cambia el nombre del archivo de un archivo específico, sino que también puede cambiar el formato de los archivos. Por ejemplo, el fragmento de código siguiente utiliza la combinación de los comandos Get-ChildItem y Rename-Item filtrando todos los archivos con formato .txt y cambiando su formato de archivo a .csv.

Código de ejemplo:

gci *.txt | Rename-Item -NewName { $_.Name -replace '.txt', '.csv' }
gci -Filter *.csv

Producción :

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        12/10/2021  11:38 PM           2982 RenamedFile.csv
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn