Получить первые две строки каждого имени файла в каталоге как текстовый файл

Мне нужно очистить строки как здесь (где я читаю в группе имен изображений), где я хочу только первые две строки (в настоящее время я использую, в строке 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 sqr rs.JPG

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам