No XP, como renomear um diretório de arquivos usando um regex ou similar para remover parte de um nome de arquivo e adicionar um prefixo?

No XP, como renomear um diretório de arquivos usando um regex ou similar para remover parte de um nome de arquivo e adicionar um prefixo?

Eu tenho uma lista de arquivos gerados a partir do SSMS no XP assim:

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

Quero renomeá-los para:

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

Estou aberto ao PowerShell, lote antigo ou qualquer outra coisa. Se você puder fazer isso com um regex, seria fascinante, mas o que quer que funcione lá também. Eu quero os fins, não os meios, certo? Só não tenho certeza de qual comando usar. No entanto, não quero baixar uma ferramenta para fazer isso. XP SP3 nativo, por favor.

Este é um trabalho único, não algo a ser programado, se isso importa. Mas posso repetir isso no futuro, portanto, programável não é uma coisa ruim.

Responder1

Coloque isso em um arquivo em lote que esteja no mesmo diretório e execute:

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

Isso dividirá o nome do arquivo pelo "." caractere usando as variáveis ​​%%A a %%D e, em seguida, renomeie usando o nome de arquivo reorganizado.

Responder2

Um script PS bruto para diversão:

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

informação relacionada