我正在尝试运行一个批处理程序来过滤用户的电子邮件和密码,该电子邮件和密码的格式为email:password,并且在文本文件中还包含很多不需要的单词和其他与此符号“:”相同的内容。
这是使用批处理程序过滤我的用户详细信息
@For /F "Delims=" %%A In ('FindStr /L ":" "file.txt"')Do @Echo(%%~nxA>>"combo.txt"
这是代码正在使用。 file.txt
也包含那些email:pass
和其他文本。 combo.txt
与过滤的电子邮件一起输出:通过
file.txt包含
Username: emailaddress@mail.com
Password: password123
As Combo: emailaddress@mail.com:password123
Subscription: Premium
Recurring date: 7/8/19
Status: Premium for Family
Country: DE
combo.txt
中的期望输出为
emailaddress@mail.com:password123
combo.txt
中我的实际输出为
Username: emailaddress@mail.com
Password: password123
As Combo: emailaddress@mail.com:password123
Subscription: Premium
19
Status: Premium for Family
Country: DE
答案 0 :(得分:1)
假设Username:
中只有Password:
和File.txt
一套:
:: Q:\Test\2019\06\09\SO_56516697.cmd
@Echo off&SetLocal
Set "Username="
Set "Password="
for /f "tokens=1*delims=: " %%A in ('
findstr /i "^Username: ^Password:" "File.txt"
') Do Set "%%A=%%B"
If defined Username if defined Password (
Echo:%Username%:%Password%
)>>"combo.txt"
示例输出:
> Q:\Test\2019\06\09\SO_56516697.cmd
> type combo.txt
emailaddress@mail.com:password123
当然,也可以通过for(代码块)中的更多处理来过滤多组Username:
和Password:
。
答案 1 :(得分:0)
使用单线格式,
For /F "tokens=1,2,*Delims=: " %%A In ('FindStr /L ":" "%filename1%"') Do IF "%%A%%B"=="AsCombo" Echo(%%C>"u:\combo.txt"
请注意,我已经更改了文件名以适合我的系统。
该代码使用:
和 Space 作为分隔符。在目标行上,As
将被分配第一个令牌%%A
和Combo
到%%B
,因此将选择“ %% A %% B” ==“ AsCombo” As Combo
行,并将所需的值分配给该行的%%C
。
注意,我将>>
降为>
降为create anew
而不是append
。
实际上,FindStr /L ":"
可以替换为type
,因为过滤包含:
的行并没有真正的优势。
在)
和DO
之间没有空格似乎可以工作,但这不是标准操作。
答案 2 :(得分:0)
生活变得更加轻松
for /f "tokens=3" %%a in ('type file.txt^|find "As Combo:"') do >combo.txt echo %%a