Building a DOS script to rename files
Original filenames:
FIL120_000112_DDMMYY ==> MYNAME_TLD_EXT_YYMMDD
I need to take the original filename last portion (DDMMYY) and turn it into YYMMDD.
Abaixo está um script em lotes do Windows que fará exatamente o que você lista em sua pergunta - se você quiser uma explicação do que este script está fazendo, me avise e adicionarei comentários à lógica para esclarecer exatamente se você não tem certeza baseado no que eu tenho nele.
Você precisará alterar o SET SourceDir=
para ser o caminho completo dos locais onde os arquivos que você precisa renomear estão localizados.
Eu usei a extensão de arquivo .txt
desses arquivos no meu exemplo, mas você pode alterá-la para qualquer outra extensão na parte DIR /B "%SourceDir%\*_*_*.txt"
da lógica abaixo. Ajudarei com isso se você tiver problemas. Avise-se me.
Além disso, se seus arquivos não tiverem extensões, informe-nos e adicionarei outro exemplo a essa resposta sem nenhuma extensão de arquivo que ainda possa ser concluída para você.
Por favor, note que eu testei e confirmei que isso funcionou exatamente como esperado com os exemplos acima e explicações na sua pergunta acima.
Exemplos de script em lote do Windows
Nome do arquivo Analisar e renomear arquivos com extensões
@ECHO ON
SET SourceDir=C:\PathForFilesToRename
FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*.txt""') DO (
CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA" "%%~XA"
)
GOTO EOF
:RenameLogic
SET FnameNoExt=%~2
FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S)
SET FnameDtPart=%FnameNoExt:~-6%
SET DD=%FnameDtPart:~0,2%
SET MM=%FnameDtPart:~2,2%
SET YY=%FnameDtPart:~-2%
SET Extension=%~3
REN "%~1" "%FnamePart1%_%YY%%MM%%DD%%Extension%"
GOTO EOF
Nome do arquivo Analisar e renomear arquivos sem extensões
@ECHO ON
SET SourceDir=C:\PathForFilesToRename
FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*""') DO (
CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA"
)
GOTO EOF
:RenameLogic
SET FnameNoExt=%~2
FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S)
SET FnameDtPart=%FnameNoExt:~-6%
SET DD=%FnameDtPart:~0,2%
SET MM=%FnameDtPart:~2,2%
SET YY=%FnameDtPart:~-2%
REN "%~1" "%FnamePart1%_%YY%%MM%%DD%"
GOTO EOF
Nome do arquivo Analisar e renomear arquivos sem extensões com a parte de renomeação estática
( Nota Importante: Se dois arquivos tiverem o mesmo nome YYMMDD quando renomeados com o nome estático, então isso será um problema, mas contanto que não haja dois arquivos no mesmo pasta terá o mesmo nome YYMMDD, então isso deve funcionar sem nenhum problema .. Se houver um arquivo que já foi renomeado com o nome estático e, em seguida, o próximo tenta renomear com o mesmo nome estático, então isso será um problema. )
Variável Nota: No seguinte SET StaticFnamePart=
você pode definir isso para o que você quer que seja definido para ser para a parte renomear estático do arquivo avançar e que vai ser o que é usado para colocar nessa parte do arquivo renomeado.
@ECHO ON
SET SourceDir=C:\PathForFilesToRename
SET StaticFnamePart=MYNAME_TLD_EXT
FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*""') DO (
CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA"
)
GOTO EOF
:RenameLogic
SET FnameNoExt=%~2
FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S)
SET FnameDtPart=%FnameNoExt:~-6%
SET DD=%FnameDtPart:~0,2%
SET MM=%FnameDtPart:~2,2%
SET YY=%FnameDtPart:~-2%
REN "%~1" "%StaticFnamePart%_%YY%%MM%%DD%"
GOTO EOF