我有一个包含以下内容的txt文件:
a random word
another random word
even more random words
this 10.000 times
我想将用户输入set /p String=String:
与txt文件中的每个单词进行比较。
我的想法如下:我使用find /n /v "" Txtfile.txt>txt2file.txt
创建一个txt文件,其中包含[line] Afront的每个单词并手动删除
---------- txt2file.txt
是find
命令的结果。我现在有以下txt文件:
[1]a random word
[2]another random word
[3]even more random words
这10.000次
要提取一行,请说行[2]我此时使用find "[%A%]" txtfile2.txt
且A为2。
cmd返回:
---------- txt2file.txt
[2]another random word
现在,如何确保删除输入和---------- txt2file.txt
,并保存[2]another random word
?
如果我能解决这个问题,我有两个想法,比较复杂的和丑的。
复杂修复:
setlocal enableDelayedExpansion
for /F %%F in ("!string!") do (
set "string=!string:[%A%]"=!"
with A=2
)
echo %string%
pause
根据我的逻辑,这应该用""替换字符串的[2]部分。 (虚无)并制作字符串a random word
。
问题是:
它基本上什么都不做,它返回[2]another random word
简单的想法(调试版):
set "StringCompare=[2]a random word"
set "String=a random word"
set "A=2"
set StringCompare=[%A%]%String%
if "%StringCompare%==[%A%]%String%" echo Success!
pause
不起作用,它在if
声明中崩溃,我无法找出原因。
如果你能提出任何解决方案,我会感到高兴。一个更好的版本也会很好。
我知道有很多重复,但所有的答案都是vbs,我还没有学到,我不喜欢使用我不理解的代码的想法。 如果你有一个vbs的解决方案(首先尝试批量:),请解释它让我快乐。
答案 0 :(得分:0)
使用FIND命令时有两个选项。
type txtfile2.txt |find "[%A%]"
OR
find "[%A%]" <txtfile2.txt
这将获得在输出时找到的文件名。