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