Recentemente tive uma ocorrência na empresa onde um determinado arquivo externo (txt ou csv) estava retornando com colunas invertidas no Layout do arquivo, o problema seria fácil resolver se pudesse alterar o programa que realiza a leitura desse arquivo, só que não 🙁
Outro problema que enfrentei foi o fato de não poder desenvolver nada em C#, então pensei, talvez eu consiga resolver esse problema fazendo um programa de lote (Batch) 🙂
Comecei uma pesquisa na internet e constatei que era possível com poucas linhas de códigos 🙂
1º Imagine um arquivo TXT, CSV ou qualquer outro arquivo que seja delimitado, como por exemplo o layout abaixo.
Nome;CPF,SobreNome
Fabrizio;04665958787;Gianfratti
Nome | CPF | SobreNome |
Fabrizio | 04665958787 | Gianfratti |
Vamos considerar que o Layout descrito acima esta na ordem incorreta, o certo seria, (Nome;SobreNome;CPF).
Dessa forma temos que mudar as colunas de CPF e SobreNome, para isso usamos o trecho de código abaixo em um arquivo .BAT
@echo off for /f "tokens=1-3 delims=;" %%a in (DGR.R5NIJB.RVS.CRIVOPF.TXT) do ( >> NovoArquivo.TXT echo.%%a;%%c;%%b )
Algumas observações importantes:
Na variável Tokens estamos falando que a ordenação será da 1º coluna até a 3º coluna, caso você tenha mais colunas no arquivo basta inserir o numero máximo de colunas
Perceba que a ordenação de fato ocorre no comando “%%a;%%c;%%b” onde eu inverto a posição das colunas levando-se em consideração as letras do alfabeto.
Caso o seu delimitador não seja (;) basta alterar na variável delims e também entre a ordenação das colunas %%a;%%c;%%b
Observe que após rodar o trecho de código um novo arquivo será gerado “NovoArquivo.TXT” conforme mencionado no código.
Resultado Final:
Nome;SobreNome;CPF
Fabrizio;Gianfratti;04665958787
Nome | SobreNome | CPF |
Fabrizio | Gianfratti | 04665958787 |
Faça um teste e seja feliz 🙂