Cómo cambiar el nombre de lote parte del nombre de archivo en Windows PowerShell usando expresiones regulares?

En este ejemplo, tenemos 6 archivos siguientes con la fecha y el nombre de abajo:

Modo LastWriteTime Nombre Longitud
----                -------------         ------ ----
-un----       10/06/2018     12:40              0 1 = 9.8.16 Informe de cuenta 298.67.pdf
-un----       10/06/2018     12:40              0 2 = 9.9.16 Informe de cuenta 134.74.pdf
-un----       10/06/2018     12:41              0 3 = 9.10.16 Informe de cuenta 123.43.pdf
-un----       10/06/2018     12:41              0 4 = 9.11.16 Informe de cuenta 134.54.pdf
-un----       10/06/2018     12:41              0 5 = 9.12.16 Informe de cuenta 157.98.pdf
-un----       10/06/2018     12:41              0 6 = 9.1.17 Informe de cuenta 123.45.pdf

aquí, el nombre de archivo contiene una serie # al principio, seguida de =, seguido de ‘Estado de cuenta bancaria’ seguido por el final del saldo de la cuenta.

Estos archivos están en Extractos de la tarjeta de crédito y de hecho la palabra ‘Banco’ necesita ser reemplazada por las palabras ‘tarjeta de crédito’. Todo el resto del nombre de archivo debe ser el mismo.

Con el fin de lograr este, vamos a utilizar Ventanas Potencia Shell con expresiones regulares.

Para una lista de todos los estados de cuenta bancarios, usamos la ls mando, entonces canalizar la salida

ls | -newname ren {$_.name -replace('(.+)Banco(.+)','$ 1Credit tarjeta de $ 2')}

El comando de cambio de nombre se utiliza después de la tubería para cambiar el nombre de los archivos. $_ es el objeto que mantiene la salida antes de que el tubo de, y estamos utilizando la propiedad del nombre de la $_ objeto. -replace se utiliza en las cadenas de Potencia Shell, que sustituye una cadena con una nueva cadena. -replace es una función que toma 2 parámetros. El primero es el parámetro de edad cadena que queremos reemplazar y el segundo parámetro es la nueva cadena.

La captura de los grupos de expresiones regulares nos permite mantener partes de la cadena. en expresiones regulares, nada puesto entre paréntesis es capturado para su uso posterior. por ejemplo,. (.+)Bank(.+) capta nada antes y después de los caracteres ‘Banco’. Podemos usar estas piezas capturadas, mediante el uso $ y un número. La primera captura en paréntesis $1 y el segundo paréntesis de captura en $2 etc.…

En el primero de parámetros, especificamos la vieja cadena que queremos sustituir, y, al mismo tiempo que la captura de las partes de la cadena que queremos mantener (capturar). En el segundo parámetro, la nueva cadena utiliza las piezas capturadas que queremos mantener, así como la nueva cadena en sí, por ejemplo. '$1Credit Card$2'.

Resultado:

Modo LastWrite Tiempo Nombre Longitud
----       ---------      ----            ------   ----
-un----     10/06/2018     12:40              0 1 = 9.8.16 Declaración de la tarjeta de crédito 298.67.pdf
-un----     10/06/2018     12:40              0 2 = 9.9.16 Declaración de la tarjeta de crédito 134.74.pdf
-un----     10/06/2018     12:41              0 3 = 9.10.16 Declaración de la tarjeta de crédito -a --- 123.43.pdf-     10/06/2018     12:41              0 4 = 9.11.16 Declaración de la tarjeta de crédito -a --- 134.54.pdf-     10/06/2018     12:41              0 5 = 9.12.16 Declaración de la tarjeta de crédito -a --- 157.98.pdf-     10/06/2018     12:41              0 6 = 9.1.17 Declaración de la tarjeta de crédito 123.45.pdf

Deja una Respuesta