|
对于经常把用户手机或者电脑硬盘当垃圾回收站使的微信操作系统来说,几十G、几百G的数据建议还是使用微信自带清理或者第三方微信清理工具更靠谱,重复文件查找文件都不见得管多大用。
以下代码只是举例,楼主需要自己完善,我清理的方法是删除整个微信数据文件夹
- @echo off
- pushd %~dp0
- ::文件名中只有一个()的情况
- for /f "tokens=1* delims=(" %%a in ('dir "*(*).*" /s /b ^| findstr [0-9]') do echo;%%a%%~xb
- pause
复制代码
- @echo off
- setlocal enabledelayedexpansion
- mode con cols=150 lines=52
- pushd %~dp0
- ::考虑到文件名中会存在多个()的情况,局限:仅支持同目录下的重复文件
- for /f "delims=" %%a in ('dir "*(*).*" /s /b ^| findstr [0-9]') do (
- set "var=%%~na"
- rem 用7z.exe计算文件名含有([0-9])的文件的sha256值
- for /f "skip=8" %%b in ('7z.exe h -scrcsha256 "%%a"') do if not defined sha256a set "sha256a=%%b"
- rem 在不含文件后缀的文件名中反向查找(,最多查找(9999),得到去掉文件名末尾([0-9])和一个空格的文件路径
- for /l %%b in (-1 -1 -6) do if not defined filename if "!var:~%%b,1!"=="(" set "filename=!var:~0,%%b!"
- if "!filename:~-1!"==" " set "filename=!filename:~0,-1!"
- set "filepath=%%~dpa!filename!%%~xa"
- if exist "!filepath!" (
- rem 用7z.exe计算文件名末尾去掉([0-9])的文件的sha256值
- for /f "skip=8" %%b in ('7z.exe h -scrcsha256 "!filepath!"') do if not defined sha256b set "sha256b=%%b"
- if "!sha256a!"=="!sha256b!" echo del /f /q "%%a"
- )
- )
- echo;
- echo;
- pause
复制代码
- @echo off
- setlocal enabledelayedexpansion
- mode con cols=150 lines=52
- pushd %~dp0
- echo;重复文件查找中...
- echo;
- echo;
- echo;重复的文件列表>"%temp%\重复的文件列表.log"
- for /f "skip=8 tokens=1,2*" %%a in ('7z.exe h -scrcsha256') do (
- if exist "%~dp0%%c" (
- if not defined %%a (
- set %%a=%%c
- ) else (
- (set %%a
- echo;%%a %%c)>>"%temp%\重复的文件列表.log"
- echo;删除重复文件: %%c
- )
- )
- )
- start "" notepad.exe "%temp%\重复的文件列表.log"
- color 2f
- pause
复制代码
|
|