Windows 使用批处理文件在.txt文件中搜索双字

Windows 使用批处理文件在.txt文件中搜索双字,windows,batch-file,duplicates,findstr,Windows,Batch File,Duplicates,Findstr,为了找到我问题的答案,我在谷歌上做了一些研究 我发现的唯一相似之处也是我的问题是在这个网站上: 我创建了一个批处理文件,该文件创建了一个.txt文件,其中有8行,如下所示: 你好 伴侣 怎么 是 你 做 再见 再见 我想制作一个批处理文件,可以检测文本文件中的双字,在这个文件中,它必须检测Bye 在批处理文件中,也生成了带有8行的.txt文件,我想让它检测文本文件中的双字Bye,经过一些研究,我得出结论,使用findstr,这一定是可能的 findtr能否检测到单词Bye出现两次 在我的档案里

为了找到我问题的答案,我在谷歌上做了一些研究 我发现的唯一相似之处也是我的问题是在这个网站上:

我创建了一个批处理文件,该文件创建了一个.txt文件,其中有8行,如下所示:

你好

伴侣

怎么

再见

再见

我想制作一个批处理文件,可以检测文本文件中的双字,在这个文件中,它必须检测
Bye

在批处理文件中,也生成了带有8行的.txt文件,我想让它检测文本文件中的双字
Bye
,经过一些研究,我得出结论,使用
findstr
,这一定是可能的

findtr
能否检测到单词
Bye
出现两次

在我的档案里,我想得到一份这样的报告

您制作的文本文件中的echo%不是或有%a个双字 所以我想把findstr的结果放入变量%is not或there is%

抱歉,如果这是一个糟糕的问题,但我是stackoverflow的新手,我是荷兰人:/ (用谷歌翻译翻译的大量文本)
你能解释一下,如果这是一个糟糕的问题,我如何才能让你更清楚地了解这一点吗

@echo off
for /f %%i in (t.txt) do for /f %%a in ('type t.txt^|findstr /x "%%i"^|find /v /c "" ') do if %%a gtr 1 echo %%i
findstr
无法计数,因此我们必须使用
find/c
作为帮助程序


有关详细信息,请参见
find/?
findstr/?
for/?

Stephan的答案有效,但它会打印出每个重复的单词,打印次数与显示次数相同。它的效率也相当低,每行读取一次整个文件

这里有一个相当简单的纯批处理解决方案,它只打印出每个复制字一次。如果使用SORT将所有复制分组在一起,任务会简单得多。但是,Windows排序命令忽略大小写,因此IF也必须忽略大小写。此解决方案只读取文件两次,不考虑大小,一次用于排序,一次用于/F

@echo off
setlocal enableDelayedExpansion

set "prev="
set "dup="
for /f "delims=" %%W in ('sort test.txt') do (
  if /i %%W==!prev! (
    if not defined dup echo(%%W
    set dup=1
  ) else set "dup="
  set "prev=%%W"
)
如果希望单词比较区分大小写,则上述算法需要区分大小写的排序例程。我写这封信就是为了(除其他外)做到这一点。它是在Windows上本机运行的纯脚本(混合JScript/batch)

但是如果您愿意使用JScrpt/批处理混合,那么如果您添加my,解决方案就会变得非常简单。
/M
选项允许我在换行符中搜索重复的单词

jsort test.txt | jrepl "^(.+)$(\r?\n\1$)+" $1 /jmatch /m

启动JScript引擎需要很长的初始化时间,因此如果文件很小,这个解决方案比纯批处理解决方案慢一点。但如果文件较大,则比纯批处理解决方案快得多。

谢谢您的帮助!这有助于我将%%i“转换/更改”为正常变量,如%i%?是否可以将“for命令”的结果输出到(output.txt)?我现在有了用于/f%%i in(t.txt)的代码,用于/f%%a in('type t.txt^ findstr/x%%i^ find/v/c”“)如果%%a gtr 1 echo%%i>>result.txt,则执行该操作,但我想在程序文件中执行该操作,但不是这样执行的:对于/f%%i in(C:\program files\something.txt)对于/f%%a in('type something.txt^ findstr/x“%%i”^ find/v/C“'),如果%%a gtr 1 echo%%i我做了一些研究并找到了程序文件和“programfiles”,则执行该操作但它不起作用。在程序文件中可能吗?你能解释一下吗?我终于完成了,它成功了!谢谢你的帮助这两个字必须是连续的吗?或者,如果你还有一个词,你还认为它是双倍的吗?谢谢这个帖子: