Opções de renomeação do MS Dos Batch

0

Eu tenho alguns arquivos como:

f0110_01_online.png

f0122_01_01_online.png

f0122_0201_online.png

Existe um texto comum "_online" em todos os nomes de arquivo.

Eu só quero remover o '_online' de cada filenaeme com apenas um programa de linha em um arquivo .bat, porque todas as vezes que o número de arquivos e o número de arquivos forem alterados.

Estou tentando:

ren * _online.png * .png

mas não está funcionando.

Por favor, sugira-me a maneira correta de fazer isso em um arquivo de lote

    
por Ravindra D. 19.11.2013 / 08:08

2 respostas

1

Você pode estar interessado na resposta para Como o comando Windows RENAME interpreta curingas?

Infelizmente, o comando REN sozinho não pode fornecer o resultado desejado. Você pode eliminar online usando ren *_online.png *_.png , mas a eliminação do _ é impossível apenas com o comando REN.

A solução mais simples usando comandos nativos é um pequeno arquivo de lote:

@echo off
setlocal enableDelayedExpansion
for /f "eol=: delims=" %%F in ('dir /b *_online.png') do (
  set "file=%%F"
  ren "!file!" "!file:~0,-11!.png"
)

No improvável caso de você ter nomes de arquivos que contenham o caractere ! , você precisaria:

@echo off
setlocal disableDelayedExpansion
for /f "eol=: delims=" %%F in ('dir /b *_online.png') do (
  set "file=%%F"
  setlocal enableDelayedExpansion
  ren "!file!" "!file:~0,-11!.png"
  endlocal
)
    
por 19.11.2013 / 19:29
0

Eu não sei como usar o arquivo em lotes. Mas eu tenho um jeito fácil de alcançar sua demanda. Você pode usar o Total commander e usar o Multi Rename Tool, combinar com a opção regex para renomear em massa o arquivo que você deseja. Espero que esta dica possa te ajudar

    
por 19.11.2013 / 08:25