Ok @newbie, aqui está o código que você precisa usar para iterar os arquivos de texto, obter a data de modificação de cada arquivo, copiar cada arquivo usando a data modificada como parte do nome do arquivo e excluir os arquivos originais. Você estava muito perto, mas estava faltando algumas coisas.
Para obter a data de modificação de um arquivo, podemos usar set "MDate=%%~tF"
.
Para analisar a data fornecida por set "MDate=%%~tF"
, você precisará especificar quais partes do valor armazenadas por% MDate% você deseja usar na saída. Você pode usar o comando set "ParsedDate=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!"
para converter a saída de set "MDate=%%~tF"
de MM / DD / AAAA hh: mm para AAAAMMDD.
Depois disso, podemos copiar os arquivos para novos arquivos usando o valor de% ParsedDate% no nome do arquivo.
Você deve ver duas cópias dos arquivos. Se você deseja excluir os arquivos originais, basta executar o comando for %%F in ("C:\test\*.txt") do ( del %%F )
. Isso vai deixar você com os arquivos de texto renomeados. Para converter o arquivo .txt.new para .txt, use o comando ren "C:\test\*.new" *.
.
Como estamos em um loop for, precisamos mudar a forma como lidamos com varables (que, com base no que você escreveu até agora, já sabe). Nós mudamos% para! para nomes de variáveis dentro de um loop. Portanto, se você tiver o nome da variável example
, faça referência à variável usando !example!
dentro do loop em vez de %example%
.
Para que as variáveis dentro do loop funcionem, também precisamos adicionar o comando setlocal enabledelayedexpansion
antes do loop.
Isso deve cobrir tudo. Por favor, sinta-se livre para votar ou marcar a resposta como correta, se isso resolve o problema.
O arquivo em lote completo é fornecido abaixo.
setlocal enabledelayedexpansion
for %%F in ("C:\test\*.txt") do (
set "MDate=%%~tF"
set "ParsedDate=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!"
copy %%F %%~dpnF_!ParsedDate!%%~xF.new )
for %%F in ("C:\test\*.txt") do (
del %%F )
ren "C:\test\*.new" *.
exit