如何解决我的批处理代码(过滤器程序)上出现的错误?

时间:2019-06-09 17:09:07

标签: batch-file cmd

我正在尝试运行一个批处理程序来过滤用户的电子邮件和密码,该电子邮件和密码的格式为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

3 个答案:

答案 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将被分配第一个令牌%%ACombo%%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