[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
谢谢各位帮忙,
确实标题重复的都不能处理.
文本.txt
  1. 岳阳楼
  2. 春色醉巴陵,阑干落洞庭。
  3. 水吞三楚白,山接九疑青。
  4. 空阔鱼龙气,婵娟帝子灵。
  5. 何人夜吹笛,风急雨冥冥。
  6. 岳阳楼
  7. 岳阳楼
  8. 岳阳楼上日衔窗,影到深潭赤玉幢。
  9. 怅望残春万般意,满棂湖水入西江。
  10. 黄鹤楼
  11.   昔人已乘黄鹤去,此地空余黄鹤楼。
  12.   黄鹤一去不复返,白云千载空悠悠。
  13.   晴川历历汉阳树,芳草萋萋鹦鹉洲。
  14.   日暮乡关何处是,烟波江上使人愁。
复制代码
文本.log
  1. 岳阳楼
  2. 黄鹤楼
  3. 岳阳楼
复制代码
这种情况,代码都出现了问题

TOP

本帖最后由 WHY 于 2023-1-8 23:39 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. for %%i in (*.txt) do (
  4.     if exist "%%~ni.log" (
  5.         setlocal enabledelayedexpansion
  6.         for /f "delims=" %%j in ('type "%%~ni.log"') do (
  7.             set "_%%j=1"
  8.         )
  9.         (for /f "delims=" %%j in ('type "%%i" ^| findstr /n .*') do (
  10.             set "s=%%j"
  11.             set "s=!s:*:=!"
  12.             if defined _!s! (
  13.                 set /a n+=1
  14.                 echo;!n!、《!s!》
  15.                 set "_!s!="
  16.             ) else (
  17.                 echo;!s!
  18.             )
  19.         )) > "%%i.~tmp"
  20.         endlocal
  21.         move "%%i.~tmp" "%%i"
  22.     )
  23. )
  24. pause
复制代码
1

评分人数

TOP

本帖最后由 xp3000 于 2023-1-11 12:20 编辑

谢谢,可以用就行,在两首诗同名时确实会出错

一个文本,两首同名不同内容的诗

TOP

本帖最后由 77七 于 2023-1-8 14:21 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.         set "fileName=%%~ni"
  5.         if exist "!fileName!.log" (
  6.                 for /f "delims=" %%a in (!fileName!.log) do (
  7.                         set "_%%a=ture"
  8.                 )
  9.                 set /a "num=0"
  10.                 for /f "delims=" %%b in ('findstr /n .* !fileName!.txt') do (
  11.                         set "str=%%b"
  12.                         set "str=!str:*:=!"
  13.                         if defined _!str! (
  14.                                 if defined #!str! (
  15.                                         >>xxx.temp echo,!str!
  16.                                 ) else (
  17.                                         set /a num=num+1
  18.                                         set "#!str!=ture"
  19.                                         >>xxx.temp echo,!num!、 《!str!》
  20.                                 )
  21.                         ) else (
  22.                                 >>xxx.temp echo,!str!
  23.                         )
  24.                 )
  25.                 move /y xxx.temp !fileName!.txt
  26.         )
  27. )
  28. endlocal
  29. pause
复制代码

我太菜了..写了好多..并且有一个问题,如果一个标题在多个log内存在,会有异常,也算变相查重了吧,如果没需要,我再试试修改
1

评分人数

bat小白,请多指教!谢谢!

TOP

本帖最后由 xp3000 于 2023-1-10 13:44 编辑

谢谢,如果碰到两首诗同名会出错,怎么修改

TOP

如不介意,可用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )来实现
  1. gawk "NR==FNR{text[$0] = NR \"、《\" $0 \"》\";next}{if($0 in text){$0=text[$0]}}1" 文本.log 文本.txt>修改后的文本.txt
复制代码
注意,要确保“文本.log” 及 “文本.txt” 已保存为ANSI编码格式
1

评分人数

TOP

返回列表