找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22754|回复: 5

[文本处理] 比较文件内容,请大神们给个思路

[复制链接]
发表于 2020-5-22 15:32:39 | 显示全部楼层 |阅读模式
本帖最后由 dailyad 于 2020-5-22 17:19 编辑

我现在下载了4个数据的smiles格式数据,打开后里面里面才一行,以空格结尾,如:
  1. C([C@@H](C(=O)O)N)c1ncn(C)c1       
复制代码
四个数据的命名规律都不一样,每个数据库文件1-2万,现在想去掉重复的项,思路有两个,请大神们指导一下
1.先提取文件名+数据,保存为CSV,再想办法处理
2.批处理遍历比较内容,输出有相同内容的文件名称。
发表于 2020-5-22 22:01:48 | 显示全部楼层
可以先以文件大小来排序,再根据大小去重,cmd好像是有提供一个命令来判断文件是否相同的,自己help看看
 楼主| 发表于 2020-5-23 14:51:00 | 显示全部楼层
可以先以文件大小来排序,再根据大小去重,cmd好像是有提供一个命令来判断文件是否相同的,自己help看看
wujunkai 发表于 2020-5-22 22:01



    仔细比较了一下,有一些文件空格后面还可能带有字符,此外,相通大小的文件超级多,所以比较大小不是很靠谱,搜索空格前面的字符,看起来工作量很大。
发表于 2020-5-23 17:59:17 | 显示全部楼层
powershell利用文件hash值,判断文件是否完全一样。
  1. Get-FileHash *.smiles | Group-Object -Property Hash | Where-Object Count -GE 2
复制代码

评分

参与人数 1技术 +1 收起 理由
dailyad + 1 乐于助人

查看全部评分

发表于 2020-5-25 11:39:46 | 显示全部楼层
只有一行数据,可以根据数据内容排序,再做比较,进行分组.ASNI
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM smiles文件夹
  4. set "dir=C:\Users\lenovo\Desktop\新建文件夹"
  5. set "code=( for /r "%dir%" %%i in ("*.smiles"^) do @( for /f "usebackq delims=" %%a in ("%%i"^) do @( echo %%a#%%i ^)^)^) ^| sort"
  6. set "word="
  7. for /f "tokens=1* delims=#" %%i in ('%code%') do (
  8.         if not "%%i"=="!word!" (
  9.                 echo ------------------
  10.                 set "word=%%i"
  11.                 echo 内容:!word!
  12.                 echo 文件:
  13.                 echo.        %%j
  14.         ) else echo.        %%j
  15. )
  16. echo ---------
  17. pause&exit
复制代码

评分

参与人数 1技术 +1 收起 理由
dailyad + 1 乐于助人

查看全部评分

 楼主| 发表于 2020-5-27 18:47:09 | 显示全部楼层
多谢二位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 22:45 , Processed in 0.022943 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表