
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;}