Como adicionar um prefixo a todos os arquivos e pastas em uma pasta? (janelas)

14

O comando a seguir altera apenas o nome dos arquivos, mas não as pastas.

for %a in (*) do ren "%a" "00_%a"

MatMis
fonte
Você absolutamente precisa usar um arquivo em lotes? Você não pode usar um programa como o Rename Master para fazer isso?
Dour High Arch

Respostas:

15

O comando a seguir altera apenas o nome dos arquivos, mas não as pastas.

for %a in (*) do ren "%a" "00_%a"

Notas:

  • Usar forcomo acima não é recomendado.
  • Existe a possibilidade de que os arquivos possam ser renomeados várias vezes.
  • Veja abaixo o motivo.

Use o seguinte em um cmdshell:

for /f "tokens=*" %a in ('dir /b') do ren "%a" "00_%a"

Em um arquivo em lotes (substitua %por %%):

for /f "tokens=*" %%a in ('dir /b') do ren "%%a" "00_%%a"

Nota:

É fundamental que você use FOR /Fe não o simples FOR.

Ele FOR /Freúne todo o resultado do DIRcomando antes de começar a iterar, enquanto o simples FORcomeça a iterar depois que o buffer interno está cheio, o que aumenta o risco de renomear o mesmo arquivo várias vezes.

como recomendado por dbenham em sua resposta para adicionar "texto" ao final de vários nomes de arquivos :


Leitura adicional

DavidPostill
fonte
0

Para executar esse loop For em pastas (diretórios) em vez de arquivos, inclua a /Dopção

for /D %a in (*) do ren "%a" "00_%a"

De for /?:

Variável FOR / D% comando IN (conjunto) DO [parâmetros de comando]

If set contains wildcards, then specifies to match against directory
names instead of file names.
Ƭᴇcʜιᴇ007
fonte
renfunciona em pastas. A limitação é que "não é possível especificar uma unidade ou caminho diferente para o alvo.
DavidPostill
@DavidPostill Sim, era um velho hábito, eu mudei de volta para Ren.
precisa saber é o seguinte
Você pode criar arquivos e pastas em um comando (veja minha resposta). E suspeito for /dque também possa ter o problema de tentar processar valores várias vezes (veja também minha resposta).
DavidPostill