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

1

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 a powershell, simples lote antigo ou o que for. Se você pode fazer isso com um regex que seria fascinante, mas o que quer que funcione lá também. Eu quero os fins, não os meios, sim? Apenas não sei qual comando usar. Eu não quero, no entanto, baixar uma ferramenta para fazer isso. Native XP SP3 por favor.

Este é um trabalho único, não algo para ser roteirizado, se isso for importante. Mas eu posso repetir isso no futuro, então scriptable não é uma coisa ruim.

    
por jcolebrand 14.12.2010 / 22:00

2 respostas

4

Coloque isso em um arquivo de 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 through %% D e renomeie usando o nome de arquivo reorganizado.

    
por 14.12.2010 / 22:21
4

Um script PS simples para chutes:

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