求bat(批处理)代码、或者java代码提取两个txt文本相同字符串(它们长度相同)保存于另一文本

有两个文本,里面有许多Niben101Ctg03218g00004,Niben101Ctg06121g00002,Niben101Ctg06879g00004……的字符串,长度是相等的,同一行的就有“,”相隔,但行开始或者末尾的就没“,”相隔了,小弟想从两个文本里提取出所有相同的诸如“Niben101Ctg03218g00004|”|这样的字符串,生成在另一文本中,小弟求可以解决的bat代码或者java代码,请各位计算机高手高抬贵手,帮帮小弟,谢谢!对不起小弟没有财富了,仅有的20财富昨天求助了,而且还没能解决问题~

同一文件中没重复的吧?写个批处理试试,(放两原文件a.txt b.txt同位置运行生成c.txt)

@echo off&cd/d "%~dp0"
echo 请等候...
for /f "usebackq delims=" %%i in ("a.txt")do (
  for %%j in (%%i)do set %%j=yes)
for /f "usebackq delims=" %%i in ("b.txt")do (
  for %%j in (%%i)do if defined %%j echo %%j>>"c.txt")
set/p=处理完成,正在退出... >nul
ping /n 3 127.1>nul

追问

同一文件中也存在重复的,不知你的这个代码有没有影响

追答

运行正常的话这代码里的b.txt如有多处出现a.txt中相同的同一串会重复输出,看你要求是怎么样的

追问

你好,我的要求可以不需要重复输出。另外,运行这个代码,等了比较长一段时间没有提示程序运行完成、结束等字样,一直是“请稍候…”下面光标一闪一闪……感觉应该是程序已经提取完了,但是为显示运行完成或者结束。这个代码已经提取到一些数据,现在核对看有没有漏掉的或者提取了多余的。先谢谢你了

追答

敲错了个字符,set/p=处理完成,正在退出... >nul 中把>改成<
其实后两句不要都可以,退出就表明运行完了
如果希望输出不要有重复把if defined %%j echo %%j 改成
if defined %%j set %%j=&echo %%j

追问

你好,刚已核对到,用这个代码筛出来的有些字符再回到2.txt查找不到,即是说原来2.txt里没有那个字符。

追答

不可能无中生有! 请重新测试,给重贴一次严谨些的代码

@echo off&cd/d "%~dp0"
echo 请等候...
for /f "usebackq delims=" %%i in ("a.txt")do (
  for %%j in (%%i)do set #%%j=yes)
(for /f "usebackq delims=" %%i in ("b.txt")do (
  for %%j in (%%i)do if defined #%%j set #%%j=&echo %%j
))>"c.txt"
set/p=处理完成,正在退出... <nul
ping /n 3 127.1>nul

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答