我有一个文本文件,其中包含以“密码:”开头的行。我要做的是运行命令行命令(如果可能)来解析.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:'。
有什么建议吗?感谢
答案 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
)