- 主题:我这程序哪里有问题啊,跑起来总是提前就报错退出去了… (转载)
- 【 以下文字转载自 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.*
 
- 贴错误提示呀,单独 del 微信文件有问题吗
 你这 del 别人也不敢随便测试呀
 
 【 在 ZhangShao (张稍) 的大作中提到: 】
 : 【 以下文字转载自 DOS 讨论区 】
 : 发信人: ZhangShao (张稍), 信区: DOS
 : 标  题: 我这程序哪里有问题啊,跑起来总是提前就报错退出去了…
 : ...................
 --
 FROM 111.36.207.*
 
- 很久没写bat了,只能给你点调试建议。
 你可以在各分支塞几个echo特定内容,比如后面用到的变量,做调试checkpoint.
 看输出内容,很快就能找到错误点。然后结合出错提示,找相关语句的文档吧。
 这个bat, 作为附件也传一份比较好。发正文里,被论坛扰了格式,有些语句内容是否还是你的本意,也未可知。
 
 【 在 ZhangShao 的大作中提到: 】
 :
 : 【 以下文字转载自 DOS 讨论区 】
 : 发信人: ZhangShao (张稍), 信区: DOS
 : 标 题: 我这程序哪里有问题啊,跑起来总是提前就报错退出去了…
 : 发信站: 水木社区 (Thu Aug 12 19:55:07 2021), 站内
 
 #发自zSMTH@Redmi Note 7
 --
 FROM 113.119.11.*
 
- 我是想删除缓存的那么多大体积文件啊,什么视频啊、图片啊之类的,但是程序出错压根就没有运行到删除的代码行就退出去了……………………
 
 【 在 Spirituel (魂灵之眼~ffhh) 的大作中提到: 】
 : 标  题: Re: 我这程序哪里有问题啊,跑起来总是提前就报错退出去了… (
 : 发信站: 水木社区 (Sat Aug 14 14:45:34 2021), 站内
 :
 : 贴错误提示呀,单独 del 微信文件有问题吗
 : 你这 del 别人也不敢随便测试呀
 :
 : 【 在 ZhangShao (张稍) 的大作中提到: 】
 : : 【 以下文字转载自 DOS 讨论区 】
 : : 发信人: ZhangShao (张稍), 信区: DOS
 : : 标  题: 我这程序哪里有问题啊,跑起来总是提前就报错退出去了…
 : : ...................
 :
 : --
 :
 :
 : 什么是江湖,人就是江湖,有人的地方就有江湖,你又怎么能够退得出呢?!
 :
 :
 : ※ 来源:·水木社区 mysmth.net·[FROM: 111.36.207.*]
 --
 FROM 123.117.160.*