Как найти строку в текстовом файле и номер строки экспорта - PullRequest
0 голосов
/ 20 декабря 2018

Я создаю имя пользователя и пароль для командного файла, и у меня есть система для чтения из 2 текстовых файлов, Uname и Pass, и поиска имен пользователей и паролей, но система вытягивает любой пароль, указанный в Pass.Как я могу прочитать строку с именем пользователя, установить пароль, чтобы принимать только соответствующую строку в текстовом файле Pass?

FOR /F "tokens=* delims=" %%x in (Users.txt) DO IF '%uname%'=='%%x' goto AdmCont
rem FOR /F "tokens=* delims=" %%x in (Pass.txt) DO IF '%code%'=='%%x' goto AdmCont

1 Ответ

0 голосов
/ 20 декабря 2018

Вот более простое решение:

for /f "delims=: tokens=1,2" %A IN ('findstr /n "%uname%" Users.txt') do ( @set "number_of_line=%A" && @set "_uname=%B" )

Или, используя find вместо findstr (довольно сложно):

for /f "eol=- delims=[] tokens=1-2" %A IN ('find /n "%uname%" Users.txt') do ( @set "number_of_line=%A" && @set "_uname=%B" )

Как и в вашем сообщении, которое вы запросиликод пакетного файла (у вас двойные знаки процента (%%)) вы можете удвоить знаки процента переменных .

Позвольте мне объяснить мой код:

В обоих двух циклах мы анализируем вывод команд.Вы должны знать формат команды-вывода и почему использование findstr намного проще.

findstr

  • Мы используем /n параметр с findstr, который сообщает этоecho строка, в которой была найдена указанная строка.
  • После опции /n мы указываем строку, в которой следует искать указанную строку после файла.
  • После этого мы указываем нужный файлдля поиска в указанной строке.

Вывод будет:

%line_number%:%content_of_line%

Итак, мы разберем его, сказав:

  • DON'T PARSE : символ в токене с опцией delims=:! 1042 *
  • Доступ к line_number с %(%)A и content_of_line с %(%)B с использованием опции tokens=1,2.
  • Хорошо известно: указатьпеременная буква add IN, затем команда для анализа и установки переменной номер строки и ее содержимого.

find

  • Мы используем /n параметрс find, который сообщает echo строку, в которой найдена указанная строка.
  • После опции /n мы указываем строку, в которой нужно искатьуказывается после файла.
  • После этого мы указываем файл, в котором мы ищем указанную строку.

Синтаксис очень похож, но вывод совершенно другой !:

---------- %FILENAME_SPECIFIED_WITH_CAPITAL_LETTERS%
[%line_number%]%line_content%

Итак, здесь:

  • Мы игнорируем строки, начинающиеся с - с опцией eol=-.
  • Мы не делаемразберите [] символов на токены с помощью delims=[].
  • Мы хотим получить доступ к line_number с %(%)A и line_content с %(%)B, поэтому мы добавляем опцию tokens=1,2.
  • Затем, продолжая, как описано выше (хорошо известно).

Чтобы лучше понять, как работают эти команды, я предлагаю вам открыть новое окно cmd и набрать:

  • for /?
  • find /?
  • findstr /?

Попробуйте свои примеры с find и finstr, чтобы полностью понять, как они работают.

Некоторые интересные ссылки для дальнейшего чтения:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...