2

Мне нужно очистить строки как здесь (где я читаю в группе имен изображений), где я хочу только первые две строки (в настоящее время я использую, в строке Windows 7 cmd - dir /a /b /p> textfile .текст):

  • Acaena inermis no barbs 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 кв.JPG

выглядеть следующим образом (слово пробел слово и лишить остальных):

  • Acaena Inermis
  • Копросма Тайко
  • Cortaderia richardii
  • Анемантела Урок
  • Myosotidium hort

Есть ли способ, используя cmd или batch, чтобы упростить это? Обычно каждый раз я делаю 15 файлов. Я вряд ли гуру линии CMD!

2 ответа2

2

Попробуйте это из командной строки:

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

или начать с нуля

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

Вам необходимо удвоить % процентов for имен переменных цикла в пакетном файле следующим образом:

@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
)

или же

@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
)

Чтобы перенаправить вывод в простой текстовый файл taxons.txt (обратите внимание на дополнительные () круглые скобки:

>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)

или в пакетном скрипте:

@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
)
)

Ресурсы (требуется чтение):

1

Загрузите бесплатный текстовый редактор Notepad++

Откройте ваш текстовый файл.

Нажмите CTRL-H, чтобы открыть диалог поиска и замены.

Внизу слева, проверьте Regular Expression

В Find: введите ^(.+?[ ].+?)[ ].+$ В замене: введите $1

Этот код будет предполагать, что после 2-го слова присутствует пробел. Если там есть другой символ, такой как _ или - замените второй [] на [_-] (перечисляя любой из имеющихся символов). Имейте в виду, что если у вас есть эта текстовая часть как слово, она будет обрезана там в других поисках.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .