[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 dailyad 于 2020-5-22 17:19 编辑

我现在下载了4个数据的smiles格式数据,打开后里面里面才一行,以空格结尾,如:
  1. C([C@@H](C(=O)O)N)c1ncn(C)c1
复制代码
四个数据的命名规律都不一样,每个数据库文件1-2万,现在想去掉重复的项,思路有两个,请大神们指导一下
1.先提取文件名+数据,保存为CSV,再想办法处理
2.批处理遍历比较内容,输出有相同内容的文件名称。

可以先以文件大小来排序,再根据大小去重,cmd好像是有提供一个命令来判断文件是否相同的,自己help看看

TOP

可以先以文件大小来排序,再根据大小去重,cmd好像是有提供一个命令来判断文件是否相同的,自己help看看
wujunkai 发表于 2020-5-22 22:01



    仔细比较了一下,有一些文件空格后面还可能带有字符,此外,相通大小的文件超级多,所以比较大小不是很靠谱,搜索空格前面的字符,看起来工作量很大。

TOP

powershell利用文件hash值,判断文件是否完全一样。
  1. Get-FileHash *.smiles | Group-Object -Property Hash | Where-Object Count -GE 2
复制代码
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

只有一行数据,可以根据数据内容排序,再做比较,进行分组.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

评分人数

TOP

多谢二位

TOP

返回列表