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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn