Lote arquivos para remover o sinal de menos de nomes de arquivos

3

Estou tentando limpar alguns nomes de arquivo em uma pasta específica e estou pensando em como criar um arquivo em lote para remover um sinal de menos do início de cada nome de arquivo.

Eu tenho um monte de arquivos com o padrão -FileName.pdf e gostaria de remover o sinal de menos da frente, então eu só tenho FileName.pdf.

Até agora, tenho o seguinte comando:

dir /B > Batch.txt
for /f "tokens=1,2" %i in (Batch.txt) DO ren "%i %j" %l

Existe algo mais simples que eu possa usar?

Obrigado antecipadamente

    
por JohnNg 07.12.2015 / 16:59

2 respostas

3

Gostaria de remover o sinal de menos da frente

Use o seguinte arquivo em lotes:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b -*.pdf') do (
  set _fname=%%i
  echo ren %%i !_fname:~1!
  )

Notas:

  • Isso removerá o primeiro caractere de todos os nomes de arquivos que correspondam à expressão -*.pdf .
  • Substitua echo ren por ren quando tiver certeza de que o arquivo em lote será renomeado corretamente.

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • dir - Exibe uma lista de arquivos e subpastas.
  • enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
  • para / f - Comando Loop contra os resultados de outro comando.
  • definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
  • setlocal - Defina opções para controlar a visibilidade de variáveis de ambiente em um arquivo em lotes.
por 07.12.2015 / 18:37
0

Eu uso o Free Commander XE que tem um recurso multi-renomear útil que permite visualizar os resultados antes de renomear um monte de arquivos usando um padrão.

    
por 07.12.2015 / 17:27