Obtenha as primeiras duas cadeias de cada nome de arquivo em um diretório como um arquivo txt

2

Eu preciso limpar cadeias como esta (onde eu li em um grupo de nomes de imagem), onde eu só quero as duas primeiras seqüências de caracteres (atualmente estou usando, na linha de Windows 7 cmd - dir / a / b / p > textfile.txt):

  • Acaena não é inerente a farpas dbot_25Dec15_40.JPG
  • Coprosma Taiko PB121944 invbot.rs.JPG
  • Cortaderia richardii InvBot P6260038.JPG
  • Anemanthele lessoniana LIC.nestmaker.CC BY-SA 2.0.jpg
  • Myosotidium hort ibot PB109882 sqr rs.JPG

para ficar assim (palavra do espaço do Word e remover o resto):

  • Acaena inermis
  • Coprosma Taiko
  • Cortaderia richardii
  • Anemanthele lessoniana
  • Myosotidium hort

Existe alguma maneira de usar o cmd ou o lote para simplificar isso? Normalmente, haveria 15 arquivos analisados a cada vez que eu fizer isso. Eu dificilmente sou um guru da linha de frente!

    
por nigelc 10.05.2016 / 09:14

2 respostas

2

Tente isso na linha de comando:

for /F "tokens=*" %g in (textfile.txt) do @for /F "tokens=1,2" %G in ("%~ng") do @if not "%H"=="" echo(%G %H

ou começar do zero

for /F "tokens=*" %g in ('dir /A/B/S') do @for /F "tokens=1,2" %G in ("%~ng") do @if not "%H"=="" echo(%G %H

Você precisa duplicar os sinais % percent nos nomes das variáveis de for loop em um arquivo em lotes da seguinte forma:

@echo OFF
for /F "tokens=*" %%g in (textfile.txt) do (
    for /F "tokens=1,2" %%G in ("%%~ng") do if not "%%H"=="" echo(%%G %%H
)

ou

@echo OFF
for /F "tokens=*" %%g in ('dir /A/B/S') do (
    for /F "tokens=1,2" %%G in ("%%~ng") do if not "%%H"=="" echo(%%G %%H
)

Para redirecionar a saída para um arquivo de texto simples taxons.txt (observe () parênteses adicionais:

>taxons.txt (for /F "tokens=*" %g in ('dir /A/B/S') do @for /F "tokens=1,2" %G in ("%~ng") do @if not "%H"=="" echo(%G %H)

ou em um script em lotes:

@echo OFF
>taxons.txt (
for /F "tokens=*" %%g in ('dir /A/B/S') do (
    for /F "tokens=1,2" %%G in ("%%~ng") do @if not "%%H"=="" echo(%%G %%H
)
)

Recursos (leitura obrigatória):

por 10.05.2016 / 10:15
1

Faça o download do editor de texto gratuito chamado Notepad ++

Abra seu arquivo de texto.

Pressione CTRL-H para abrir a caixa de busca e substituição.

No canto inferior esquerdo, verifique Regular Expression

Em Localizar: insira ^(.+?[ ].+?)[ ].+$ Em Substituir: insira $1

Este código assumirá que após a segunda palavra, um espaço estará presente. Se houver outro char lá, como um _ ou - substitua o segundo [] por [_-] (listando o char que houver). Tenha em mente que, se você tiver essa parte de texto como a palavra também, ela será cortada em outras pesquisas.

    
por 10.05.2016 / 09:51