【 以下文字转载自 DOS 讨论区 】
发信人: ZhangShao (张稍), 信区: DOS
标 题: 我这程序哪里有问题啊,跑起来总是提前就报错退出去了…
发信站: 水木社区 (Thu Aug 12 19:55:07 2021), 站内
RT
@ZhangShao
直接贴代码了,本身不到一百行的小程序,不解释,直接看我自己写的注释
@ rem 删除微信图片缓存,只删除图片和视频,不删除文本聊天记录
@ rem 参数1,WeChat当前登录用户名,注意这不是微信昵称,而是用户名,请查看c:\
Users\administrator\Documents\WeChat Files\路径下的你的用户存储文件夹的名称
@ rem 参数2,Windows系统当前登录用户名,省略此参数默认为windows系统安装时候默
认的用户名administrator
@ rem 参数3,删除多少天之前的缓存,限值0到1000以内,无此参数或者设为0则全部删
除
@ rem 要删除缓存的文件夹包括如下路径,但是微信不定哪次更新会变更缓存路径,因
此,本程序需要不定时的修改更新升级
@ rem c:\Users\admin\Documents\WeChat Files\qq364528149\FileStorage\Video\20
21-08
@ rem c:\Users\admin\Documents\WeChat Files\qq364528149\FileStorage\File\202
1-08
@ rem c:\Users\admin\Documents\WeChat Files\qq364528149\FileStorage\Cache\20
21-08
@ rem 返回值:0为正常,1为WeChat用户名未指定或未找到,2为系统登录用户名未找到
,3为设置天数为负或者远超过1000天
@ rem echo off
setlocal enabledelayedexpansion
@ rem 至少要告诉我你的微信名吧
@ rem if "%1"=="" echo empty 1
@ rem IF "%~1"=="" GOTO ERRORINFORMATION
if [%1]==[] GOTO ERRORINFORMATION
set wechatname=%1
if [%2]==[] (
set windowsusername=administrator
set days=0
)
if not [%2]==[] (
@ rem 假如第二个参数省略了用户名则其就是第三个参数,指定多少天之前的记录被删
除
if [%2] geq 0 if [%2] leq 1000 set days=%2
@ rem IF [%2] leq 1000 rem 假定没有人会无聊到要指定1000天的某一天之前的记录
要被删除吧,用此来判断该参数是数字而不是字符串
) else (
set windowsusername=%2
echo %windowsusername%
if [%3]==[] (
set days=0
) else if [%3] geq [0] if [%3] leq [1000] set days=%3
else GOTO ERRORINFORMATION
@rem if not [%3]==[] (
@ rem IF %3 GEQ 0 IF %3 LEQ 1000 (set days=%3) ELSE GOTO ERRORINFORMATIO
N
@rem if [%3] geq [0] (
@rem if %3 leq [1000] (
@rem set days=%3
@rem )
@rem else GOTO ERRORINFORMATION
@rem )
@ rem 限制天数为之前的1000天内否则就是穿越
@rem)
)
)
@ rem if [%2] equ [] (echo no arg!
@ rem set windowsusername=administrator
@ rem echo %windowsusername%
@ rem set days=0
@ rem echo %days%
@ rem ) else (
@ rem @ rem 假如第二个参数省略了用户名则其就是第三个参数,指定多少天之前的记
录被删除
@ rem IF %2 GEQ 0 (
@ rem IF %2 LEQ 1000 rem 假定没有人会无聊到要指定1000天的某一天之前的记录要
被删除吧,用此来判断该参数是数字而不是字符串
@ rem set days=%2
@ rem ) ELSE (
@ rem set windowsusername=%2
@ rem IF %3=="" (set days=0) ELSE ( rem 第3个参数指定天数
@ rem IF %3 GEQ 0 IF %3 LEQ 1000 (set days=%3) ELSE GOTO ERRORINFORMATION
@ rem 限制天数为之前的1000天内否则就是穿越
@ rem )
@ rem )
@ rem )
@rem cd /d C:\Users\%windowsusername%\Documents\
@rem IF errorlevel 1 (
@rem set windowsusername=John
@rem echo %windowsusername%
@rem GOTO ERRORINFORMATION
@rem )
if not exist C:\Users\%windowsusername%\Documents (
set windowsusername=John
echo %windowsusername%
GOTO ERRORINFORMATION
)
@rem cd "WeChat Files"\%wechatname%\FileStorage
@rem IF errorlevel 1 (
@rem set wechatname=Alice
@rem GOTO ERRORINFORMATION
@rem )
if not exist C:\Users\%windowsusername%\Documents\"WeChat Files"\%wechatname
%\FileStorage (
set wechatname=Alice
GOTO ERRORINFORMATION
)
echo Clean Windows user "%windowsusername%" WeChat user "%wechatname%" file
cache before %days% days
set rootdirectory="C:\Users\%windowsusername%\Documents\WeChat Files\%wechat
name%\FileStorage"
forfiles /p %rootdirectory%\File /s /m *.* /d -%days% /c "cmd /c echo del /f
/q /a @path"
forfiles /p %rootdirectory%\Video /s /m *.* /d -%days% /c "cmd /c echo del /
f /q /a @path"
forfiles /p %rootdirectory%\Cache /s /m *.* /d -%days% /c "cmd /c echo del /
f /q /a @path"
@ rem pause
@ rem start "" "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
exit /b 0
@ rem 要让使用者知道如何使用啊
: ERRORINFORMATION
echo 参数1,WeChat当前登录用户名,注意这不是微信昵称,而是用户名,请查看c:\U
sers\administrator\Documents\WeChat Files\路径下的你的用户存储文件夹的名称
echo 参数2,Windows系统当前登录用户名,省略此参数默认为windows系统安装时候默
认的用户名administrator
echo 参数3,删除多少天之前的缓存,限值0到1000以内,无此参数或者设为0则全部删
除
IF "%1"=="" (
echo 无名氏你好,无名氏再见!
exit /b 1
)
IF %wechatname%==Alice (
echo 你确认你的微信用户名不是Alice吗?
exit /b 1
)
IF %windowsusername%==John (
echo 你确认你的Windows系统用户名不是John吗?
exit /b 2
)
IF %3 GEQ 0 IF %3 LEQ 1000 () ELSE (
echo 你穿越了吗?
exit /b 3
)
exit 4
--
FROM 123.117.160.*