Eu tenho um arquivo CSV que é muito grande porque contém caminhos de arquivo e caminhos de diretório. Eu preciso modificá-lo para que ele mostre apenas os caminhos do diretório, mas não os próprios arquivos.
Eu gostaria de saber se seria bastante simples criar um script em lote "arrastar e soltar" que exclua uma linha se ela não contiver uma barra no final, porque os caminhos do arquivo não contêm barras no próprio extremidade da célula, então este é o único denominador comum a ser usado.
Desired action:
If end with forward slash = keep row
If not end with forward slash = delete entire row
Podes tentar:
Isso não é em lote, mas, se você estiver aberto a uma solução do Excel, funcionará.
Use a coluna E como uma coluna auxiliar. Presumindo que a primeira linha seja uma linha de cabeçalho, adicione esta fórmula a
E2
:Isso retornará TRUE ou FALSE. Copie / cole essa fórmula por quanto tempo seus dados forem. Classifique pela coluna E. Agora você tem todas as linhas que terminam em
/
agrupadas e todo o resto agrupado. Isso facilita selecionar todas as outras linhas como um grupo e excluí-las.Presumindo que a coluna D seja sua última coluna e o CSV não esteja formatado com aspas
" "
ao redor das strings, isso criará um segundo arquivo com apenas as linhas que terminam em/
. Você terá que alterar os nomes dos arquivos para corresponder aos seus dados. Se você quiser fazer a alteração no local, poderá adicionar algumas linhas para excluir os dados antigos e renomear os novos dados com o mesmo nome.Se seus dados têm (ou podem ter) aspas ao redor das strings, você terá que adicionar algum tratamento extra para isso. Você pode puxar os dois últimos e, se o último for
"
, verifique o penúltimo.Se as linhas de texto no arquivo CSV realmente terminarem com uma barra, o seguinte comando em lote extrairá apenas as linhas que não têm essa barra:
Referência: findstr .