我有一个文本文件,其中包含一些具有以下语法的文本:
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”,然后相应地设置变量,我想知道的是,我是如何使用循环,或者如果需要,任何其他命令能够:
答案 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
注意:
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