在字符串行中查找文本

时间:2016-08-13 07:22:11

标签: batch-file for-loop

我有一个文本文件,其中包含一些具有以下语法的文本:

mytextfile.txt:

websiteurl1 username1 password1  
websiteurl2 username2 password2                                       
websiteurl3 username3 password3

依旧......

我希望能够通过指向websiteurl找到用户名和密码字符串,所以让我说我告诉批处理文件, 找到websiteurl3,它应该打印username3和password3 我能写一个“FOR LOOP”,但我不知道如何使用循环的语法,因为我的代码总是只找到最后一行,这就是我所拥有的:

FOR /F "tokens=2,3 delims= " %%A IN (URL.txt) DO IF EXIST URL.txt (set WEBUserName1=%%A) && (SET WEBUserPass1=%%B)  
pause
echo Username:"%WEBUserName1%"
echo Password:"%WEBUserPass1%"
pause
exit

我知道循环正在查看令牌2和3的“URL.txt”,然后相应地设置变量,我想知道的是,我是如何使用循环,或者如果需要,任何其他命令能够:

  • 找到“URL.txt文件
  • 然后找到特定的字符串,在本例中是指定字符串行的第一个单词
  • 然后找到该字符串行的标记2和3。

3 个答案:

答案 0 :(得分:1)

我希望能够找到用户名和密码字符串

使用以下批处理文件。

<强> TEST.CMD:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=2,3" %%a in ('type mytextfile.txt ^| findstr "%1"') do (
  echo Username:"%%a"
  echo Password:"%%b"
  pause
  exit
  )
endlocal

注意:

  • 将网站URL字符串作为参数传递给批处理文件。
  • findstr用于查找文件中的匹配行,因此我们只需使用for /f解析一行。

示例用法和输出:

F:\test>type mytextfile.txt
websiteurl1 username1 password1
websiteurl2 username2 password2
websiteurl3 username3 password3

F:\test>test websiteurl3
Username:"username3"
Password:"password3"
Press any key to continue . . .

进一步阅读

答案 1 :(得分:0)

你得到最后一行,因为你处理整个文件。过滤文本文件并仅处理一行:

set "site=websiteurl2"
FOR /F "tokens=2,3 delims= " %%A IN ('find "%site%" URL.txt') DO (
  set "usr=%%A" 
  set "pwd=%%B"
)
echo %usr%, %pwd%

答案 2 :(得分:0)

糟糕的方式,但这也有效:

@echo off
setlocal
set srch_site=websiteurl2
FOR /F "tokens=1,2,3 delims= " %%A IN (URL.txt) DO (
    IF EXIST URL.txt (
        if "%%A"=="%srch_site%" (
            (set WEBUserName1=%%B) && (SET WEBUserPass1=%%C)&goto:stdout
        )
    )
)
:stdout
pause
echo Username:"%WEBUserName1%"
echo Password:"%WEBUserPass1%"
pause
exit