En XP, ¿cómo cambio el nombre de un directorio de archivos usando una expresión regular o similar para eliminar parte de un nombre de archivo y agregar un prefijo?

En XP, ¿cómo cambio el nombre de un directorio de archivos usando una expresión regular o similar para eliminar parte de un nombre de archivo y agregar un prefijo?

Tengo una lista de archivos generados desde SSMS en XP como este:

dbo.mysproc1.StoredProcedure.sql
dbo.mysproc2.StoredProcedure.sql
dbo.mySproc3.StoredProcedure.sql
... you get the drift

Quiero cambiarles el nombre a:

proc.dbo.mysproc1.sql
proc.dbo.mysproc2.sql
proc.dbo.mySproc3.sql
... you get the drift

Estoy abierto a powershell, lote antiguo o lo que sea. Si puedes hacerlo con una expresión regular, sería fascinante, pero cualquier cosa también funciona allí. Quiero el fin, no los medios, ¿sí? Simplemente no estoy seguro de qué comando usar. Sin embargo, no quiero descargar una herramienta para hacer esto. XP SP3 nativo, por favor.

Este es un trabajo único, no algo que deba escribirse en un guión, si es que eso importa. Pero es posible que lo repita en el futuro, por lo que la posibilidad de programar no es algo malo.

Respuesta1

Coloque esto en un archivo por lotes que esté en el mismo directorio y ejecute:

for /f "delims=. tokens=1,2,3,4" %%A IN ('dir /b *.sql') DO RENAME %%A.%%B.%%C.%%D proc.%%A.%%B.%%D

Eso dividirá el nombre del archivo por "." carácter usando las variables %%A a %%D y luego cambie el nombre usando el nombre de archivo reorganizado.

Respuesta2

Un guión de PS tosco para divertirse:

gci | foreach { $f = $_; $split = $f.Name.Split("."); $n = [string]::join(".", "proc", $split[0], $split[1], "sql")); ren $f $n;}

información relacionada