Windows CMD: adicione o sufixo a todos os arquivos na pasta

3

Eu tenho uma pasta com 120% de arquivos.cs.

O que eu preciso fazer é adicionar "DO" ao nome de todos os arquivos, antes da extensão.

Heres o que eu vim com:

ren *.cs *. //this removes all file extensions
ren *.* *DO.cs // this should rename all the files and add the suffixes

Agora, isso funciona principalmente. Mas não para alguns arquivos.

Inicialmente, pensei que eram apenas os arquivos que começavam com Do

Mas ... bem, aqui está como aconteceu:

(Orestoquenãoestánoprintscreenestábom)

Agoraissonãoéumproblemasério;idapenasgostariadeentenderporqueissofezisso...

Existeaminhasaídacmd:

De olhar para esta saída eu pensei que talvez não possa encontrar os arquivos porque o segundo comando consiste em . para a renomeação; mas desde que nenhum dos arquivos na pasta tem uma extensão de arquivo no momento da renomeação; isso não pode ser isso ..

Obrigado

    
por Master Azazel 30.11.2016 / 10:02

2 respostas

3

Como outros disseram, está na maneira como ren interpreta curingas, por isso não é possível encontrar arquivos que contenham pontos *.* no segundo comando, porque:

  • Você não apenas removeu a extensão de arquivo usando o primeiro comando, mas também pontos antes das extensões:

Artikelnummer.cs > Artikelnummer

  • E seu segundo comando está procurando por nomes de arquivos contendo . (que não existe nenhum!):

ren *.*

  • Considere também ren usa * para se referir ao nome do arquivo, portanto, quando você procurar *.* (qualquer nome, qualquer extensão), usará * para se referir a nome de arquivo e extensão ao mesmo tempo , o que é confuso para o comando ren !

Então, a conclusão é que o único problema foi *.* , substituí-lo por * :

ren *.cs *.DO.cs
ren * *DO.cs

No entanto, se você quiser renomear executando uma única linha de código:

Em um prompt de comando, execute:

for /f "tokens=* delims=" %a in ('dir /b "%FilesLocation%"') do if %~xa EQU .cs ren "%a" "%~naDO.cs"

Ou salve e execute este script:

@echo off
for /f "tokens=* delims=" %%a in ('dir /b "%FilesLocation%"') do if %%~xa EQU .cs ren "%%a" "%%~naDO.cs"

E não se esqueça de alterar %FilesLocation% com seu valor real.

    
por 09.12.2016 / 01:17
0

O que você precisa é o comando for. No topo da minha cabeça, é mais ou menos assim:

for /f "tokens=1,2* delims=." %a in ('dir *.cs /b') do (ren %a.%b %aDO.%b)

Isso não funciona para nomes de arquivos que contêm mais de um ponto.

    
por 30.11.2016 / 12:03