- @echo off&setlocal enabledelayedexpansion
- call ascmap $
- for %%a in (123.dat) do (
- for /f "delims=" %%b in (%%a) do (
- set "pind=!$:~0x05,1!"
- set "pind=;"
- set "str=%%b"
- set "str=!str:;= !"
- for %%i in (!str!) do (
- for %%j in (!str!) do (
- if "%%i" equ "%%j" set /a n+=1
- )
- if !n! gtr 3 del %%a 2>nul
- set n=
- )
- )
- )
- pause
复制代码 拜读了论坛高手的文章,想实现效果
在dat文件中
都由 草花符号 作为数据的分隔,查询了 ASCII 码例,是 0x05, 是否可以比对分隔符中的内容,发现重复超过3次删除该dat文件。
例子:A.dat (以下草花为符号,不是汉字。)
草花HD-4F草花ED-2F草花6D-3F草花HD-GF草花HD-4F草花HD-4F草花FD-3F草花ED-GF草花HD-4F草花
因为文件内容中有 "草花HD-4F" 3个以上,所以将DAT 文件删除。
!$:~0x05,1! 为什么最后是 ,1 是第一行的意思吗? 还有 ! ! 之间 是否能再次赋值?- @echo off&setlocal enabledelayedexpansion
- call ascmap $
- for %%a in (123.dat) do (
- for /f "delims=" %%b in (%%a) do (
- set "str=%%b"
- set "str=!str:!$:~0x05,1!= !"
- for %%i in (!str!) do (
- for %%j in (!str!) do (
- if "%%i" equ "%%j" set /a n+=1
- )
- if !n! gtr 3 del %%a 2>nul
- set n=
- )
- )
- )
- pause
复制代码 貌似也是不成功,求高手指点,谢谢了。
使用 hiew 8.1 查看了十六进制,对unicode 和 ascii 编码的区别不是很理解。
call ascmap $ 已经按照"plp626" 大侠的加载成功,并在屏幕下能够打印ASCII字符,附原DAT文件
因为论坛限制上传rar文件,只能将附件改名成txt,下载下来改名成RAR,解压之后有123.dat 和 a.dat 两个文件,删除那个重复内容多的那个123.dat, a.dat 保留。 |