Windows命令行用于解析文本文件中的信息

时间:2016-07-15 19:02:08

标签: batch-file cmd

我有一个文本文件,其中包含以“密码:”开头的行。我要做的是运行命令行命令(如果可能)来解析.txt文件以提取“密码:”后面的所有术语,并将它们放入一个仅列出密码的新文本文件中。 “密码:”一词与实际密码之间的空格数在条目中有所不同。

我到目前为止使用过:

FINDSTR /L "Password: " input_file.txt > output_file.txt

这很有效,但也提取“密码:”一词。从我进行的研究中,我不认为Command Line有一个内置函数来从.txt文件中删除字符串,因为我的想法是运行上面的命令,后面跟着类似的东西: -

FINDSTR /L "Password: " input_file.txt > output_file.txt & DELSTR "Password: " output_file.txt > final_file.txt & DEL output_file.txt

显然我发明了'DELSTR'但是如上所述,我需要在那里删除每行的字符串'Password:'。

有什么建议吗?感谢

2 个答案:

答案 0 :(得分:3)

实际上,有一些(非常有限的)内置函数用于字符串操作。有关详细信息,请参阅set /? 无需使用临时文件,您可以将字符串直接解析为变量:

(编辑代码以打印所有密码,如果有多个密码)

setlocal enabledelayedexpansion
for /f "delims=" %%a in ('findstr /b /c:"Password: " input_file.txt') do (
  set pwd=%%a
  set "pwd=!pwd:Password: =!"
  echo !pwd!>>final_file.txt 
)

答案 1 :(得分:0)

Stephan's 代码开始。 For /f 循环可以在没有额外字符串操作的情况下给出结果。此外,它会删除任何只是空格的结果,导致 Echo 以状态行响应,例如'回声关闭'。使用 Echo:阻止“关闭”和“开启”(潜在的,但相当弱的密码)被视为 Echo 参数。

Setlocal ENABLEDELAYEDEXPANSION
For /f "tokens=1* delims=: " %%a In ('Findstr /b /c:"Password: " input_file.txt') Do (
  Set pwd=%%b
  Echo:!pwd!>>final_file.txt 
)