Script de renomeação em lote

2

Eu tenho tentado a manhã toda para tentar escrever um script de renomeação de lote simples. Esta é minha primeira vez tentando esse tipo de coisa. Eu tenho tentado usar For /Rpara que meu comando recorra através de subpastas, mas não está funcionando.

Meu código é assim: FOR /R %%a in (.) do REN "i.JPG" "inlet.JPG"

RENestá trabalhando no diretório pai, mas não recorrendo através de subdiretórios. Alguém pode ver o que estou fazendo errado?

Obrigado.

eyerah
fonte
Você precisa adicionar a /dopção forse quiser corresponder aos diretórios. Além disso, você precisa usar "%%a\i.JPG"o rennome do arquivo de origem do comando.
AFH
Obrigado. Eu consertei o nome do arquivo e adicionei o arquivo %%a. Isso pareceu resolver o problema. O que você quer dizer com diretórios de correspondência?
eyerah
Por padrão, forcorresponde a arquivos, não a diretórios, a menos que você adicione /d: veja for /?para obter mais detalhes.
AFH
Mais investigações mostram que .serão combinadas sem /d- não entendo completamente o porquê. O que se %%a\i.JPGexpande para é SubDirName\.\i.JPG. Uma solução mais simples é FOR /R %%a in (i.JPG) do REN "%%a" "inlet.JPG": isso evita erros em subdiretórios sem nenhum i.JPGarquivo, especialmente se você deseja executar novamente o arquivo em lotes.
AFH
@eyerah Você pode especificar o que realmente deseja fazer com o arquivo em lote? Existe apenas um único arquivo ou muitos arquivos com o mesmo nome?
Biswapriyo