loop that renames multiple .txt files with the contents of itself using a .bat

0

Good morning, I have several .TXT files with random names, and I would like to rename them. However, I would like to rename it with an information that is in the first line of .txt .

  

Ex. Current file name: TD0303051209344700001AF-0000-1562.txt

     

And in the first line within txt I have: 00000000000001899970462605   201804232018042018051220180508982

The new file name should be 899970462605 (which is in column 15 through 27).

Now I need to do this 350 times. because the files have these names:

TD0303051209344700001AF-0000-1564.txt

TD0303051209344700001AF-0000-1565.txt

TD0303051209344700001AF-0000-1566.txt

How to create this looping ?? Thanks

    
asked by anonymous 21.05.2018 / 16:32

1 answer

0
  

Well, you wanted to know how you do, so I commented the script ...

@echo off

REM - Altera a largura e altura da janela   
mode 40,4

REM - Junta em um TXT o nome com a extensão de todos os arquivos de texto do diretório atual  
REM - porém impede que o "nomes.txt" seja jogado também.  
dir /b *.txt | findstr /v "nomes.txt">nomes.txt


REM - Permite o uso de variáveis dentro do comando FOR  
setlocal enabledelayedexpansion


REM - Mensagem na tela  
echo.&echo. RENOMEANDO ARQUIVOS ...

REM - Comando for lendo o "nomes.txt"  
REM - Pegando todas as colunas e linhas  
for /f "tokens=* delims= " %%A in (nomes.txt) do (

REM - Variável recebendo como valor  
REM - O nome da primeira linha do arquivo "nomes.txt"  
set arquivo=%%A

REM - Variável recebendo o valor da variável arquivo  
REM - que é o nome do primeiro arquivo que será tratado  
REM - E automaticamente passando a ter como valor  
REM - A primeira linha desse arquivo como valor  
set /p line=< !arquivo!

REM - Variável nome recebendo como valor, o valor de !line!  
REM - ignorando as 14 primeiras colunas  
REM - e recebendo as próximas 12 colunas como valor  
set nome=!line:~14,12!

REM - Renomeando o primeiro arquivo com as colunas indicadas  
ren "!arquivo!" "!nome!".txt

REM - Fim do comando FOR  
)

REM - Limpa a tela  
cls

REM - Mensagem na tela de fim do Script  
echo.&echo.    FIM DO SCRIPT ! &pause >nul
    
25.05.2018 / 21:05