我正在尝试搜索2个.txt文件,并将两个txt文件中找到的程序名称显示为新的txt文件。我正在搜索的2个文件位于同一文件夹中。
这是我的代码:
for /f "tokens=*" %%a in (Programs_installed.txt) do (
for /f "tokens=*" %%b in (Bloatware1.txt) do (
if %%a==%%b (echo %%a >> Bloatware_Found.txt)
)
)
Bloatware_Found.txt
答案 0 :(得分:0)
@echo off&cls
for /f "tokens=*" %%a in ('type "Programs_installed.txt"') do (
for /f "tokens=*" %%b in ('type "Bloatware1.txt"') do if %%a==%%b echo %%a >>"Bloatware_Found.txt")
答案 1 :(得分:0)
没有样本数据(每个文件中有几行),很难说清楚。
可能有所帮助的一些事情:
if %%a==%%b
应该是
if /i "%%a"=="%%b"
"data containing spaces"
视为单个字符串。 /i
使比较不区分大小写。不确定最后一行(看起来是什么)实际上是打算做什么的。它应该调用默认编辑器的实例,加载bloatware_found.txt
。
OR
也许你打算
(
for /f ... %%a
for /f ... %%b
if ....
)>bloatware_found.txt
which will create a new file containing anything `ECHO`ed from statements invoked by `(..)` - even if it's echoed from a subroutine.
如果你同时拥有>>file
和>samefile
,我可能会发生这种情况。可能它会尝试使用>>file
将数据附加到文件,然后将发送到控制台的整个输出(即没有,因为echo
es被重定向)写入新版本同一个文件。如果是这样,请删除追加重定向(>>file
)并恢复所有内容。
但是可能的解决方案,取决于可用(但未发布)的数据样本
findstr /l /g:bloatware1.txt /i Programs_installed.txt >bloatware_found.txt