1

У меня есть файл database.txt с этим содержанием:

40001     16                                DATAMAN      Jimbo            WS2

Я хочу извлечь третье слово, разделенное пробелами (в данном примере это DATAMAN), и сохранить его в переменной в пакетном скрипте Windows. Длина пробела может варьироваться (как и длина слова).

1 ответ1

2

Простое решение

for /f "tokens=3" %%a in (database.txt) do set word3=%%a

После этого оператора переменная %word3% будет содержать третье слово из строки в файле.  Если файл содержит более одной строки, вы получите третье слово из последней строки, которая содержит не менее трех слов; команда set word3=%%a (после ключевого слова do ) будет выполняться с %%a установленным на третье слово из каждой такой строки.  Если вы решите, что хотите выполнить более одной команды в строке, используйте следующий синтаксис:

for /f "tokens=3" %%a in (database.txt) do (
      ...
      команды, ссылающиеся на %%a
      ...
)


Редактировать: Как указано выше, код (команды) в блоке после do выполняется для каждой квалифицирующей строки.  Если вы хотите «поймать» только первую такую строку, вы можете сделать это, просто добавив логику фильтрации, например:

setlocal enabledelayedexpansion
set first=1
for /f "tokens=3" %%a in (database.txt) do (
      if !first! == 1 (
           set first=0
             ...
            команды, ссылающиеся на %%a
             ...
      )
)


Вы можете заменить a%%a) любой буквой, но это должна быть только одна буква; это не нормальная переменная.

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