{"id":579,"date":"2017-04-20T17:07:22","date_gmt":"2017-04-20T20:07:22","guid":{"rendered":"http:\/\/gianfratti.com\/?p=579"},"modified":"2017-04-20T17:12:15","modified_gmt":"2017-04-20T20:12:15","slug":"dos-ordenar-colunas-de-arquivos-por-linha-de-comando","status":"publish","type":"post","link":"https:\/\/gianfratti.com\/index.php\/dos-ordenar-colunas-de-arquivos-por-linha-de-comando\/","title":{"rendered":"DOS &#8211; Ordenar Colunas de Arquivos por Linha de Comando"},"content":{"rendered":"<p>Recentemente tive uma ocorr\u00eancia na empresa onde um determinado arquivo externo (txt ou csv) estava retornando com colunas invertidas no Layout do arquivo, o problema seria f\u00e1cil resolver se pudesse alterar o programa que realiza a leitura desse arquivo, s\u00f3 que n\u00e3o \ud83d\ude41<\/p>\n<p>Outro problema que enfrentei foi o fato de n\u00e3o poder desenvolver nada em C#, ent\u00e3o pensei, talvez eu consiga resolver esse problema fazendo um programa de lote (Batch) \ud83d\ude42<!--more--><\/p>\n<p>Comecei uma pesquisa na internet e constatei que era poss\u00edvel com poucas linhas de c\u00f3digos \ud83d\ude42<\/p>\n<p>1\u00ba Imagine um arquivo TXT, CSV ou qualquer outro arquivo que seja delimitado, como por exemplo o layout abaixo.<\/p>\n<p>Nome;CPF,SobreNome<br \/>\nFabrizio;04665958787;Gianfratti<\/p>\n<div class=\"su-table su-table-alternate\">\n<table>\n<tbody>\n<tr>\n<td>Nome<\/td>\n<td>CPF<\/td>\n<td>SobreNome<\/td>\n<\/tr>\n<tr>\n<td>Fabrizio<\/td>\n<td>04665958787<\/td>\n<td>Gianfratti<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Vamos considerar que o Layout descrito acima esta na ordem incorreta, o certo seria, (Nome;SobreNome;CPF).<\/p>\n<p>Dessa forma temos que mudar as colunas de CPF e SobreNome, para isso usamos o trecho de c\u00f3digo abaixo em um arquivo .BAT<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\n@echo off\r\n\r\nfor \/f &quot;tokens=1-3 delims=;&quot; %%a in (DGR.R5NIJB.RVS.CRIVOPF.TXT) do (\r\n&gt;&gt; NovoArquivo.TXT echo.%%a;%%c;%%b\r\n)\r\n<\/pre>\n<p>Algumas observa\u00e7\u00f5es importantes:<br \/>\nNa vari\u00e1vel <strong>Tokens<\/strong> estamos falando que a ordena\u00e7\u00e3o ser\u00e1 da <strong>1\u00ba coluna at\u00e9 a 3\u00ba coluna<\/strong>, caso voc\u00ea tenha mais colunas no arquivo basta inserir o numero m\u00e1ximo de colunas<\/p>\n<p>Perceba que a ordena\u00e7\u00e3o de fato ocorre no comando &#8220;<strong>%%a;%%c;%%b<\/strong>&#8221; onde eu inverto a posi\u00e7\u00e3o das colunas levando-se em considera\u00e7\u00e3o as letras do alfabeto.<\/p>\n<p>Caso o seu delimitador n\u00e3o seja (;) basta alterar na vari\u00e1vel\u00a0<strong>delims<\/strong> e tamb\u00e9m entre a ordena\u00e7\u00e3o das colunas <strong>%%a;%%c;%%b<\/strong><\/p>\n<p>Observe que ap\u00f3s rodar o trecho de c\u00f3digo <strong>um novo arquivo ser\u00e1 gerado<\/strong> &#8220;NovoArquivo.TXT&#8221; conforme mencionado no c\u00f3digo.<\/p>\n<p><strong>Resultado Final:<\/strong><\/p>\n<p>Nome;SobreNome;CPF<br \/>\nFabrizio;Gianfratti;04665958787<\/p>\n<div class=\"su-table su-table-alternate\">\n<table>\n<tbody>\n<tr>\n<td>Nome<\/td>\n<td>SobreNome<\/td>\n<td>CPF<\/td>\n<\/tr>\n<tr>\n<td>Fabrizio<\/td>\n<td>Gianfratti<\/td>\n<td>04665958787<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Fa\u00e7a um teste e seja feliz \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recentemente tive uma ocorr\u00eancia na empresa onde um determinado arquivo externo (txt ou csv) estava retornando com colunas invertidas no Layout do arquivo, o problema seria f\u00e1cil resolver se pudesse alterar o programa que realiza a leitura desse arquivo, s\u00f3 que n\u00e3o \ud83d\ude41 Outro problema que enfrentei foi o fato de n\u00e3o poder desenvolver nada <span class=\"ellipsis\">&hellip;<\/span> <span class=\"more-link-wrap\"><a href=\"https:\/\/gianfratti.com\/index.php\/dos-ordenar-colunas-de-arquivos-por-linha-de-comando\/\" class=\"more-link\"><span>Read More &rarr;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[20],"tags":[106,107,105,108,109,110],"class_list":["post-579","post","type-post","status-publish","format-standard","hentry","category-dicas","tag-bat","tag-batch","tag-dos","tag-ordem","tag-ordenacao","tag-reordenacao"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/comments?post=579"}],"version-history":[{"count":7,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/579\/revisions"}],"predecessor-version":[{"id":583,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/579\/revisions\/583"}],"wp:attachment":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/media?parent=579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/categories?post=579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/tags?post=579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}