Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 2225|回复: 34

[求助] 这里人多,借地儿求助,如违规,请暂留1-2天。。。 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
1808920
帖子
1940
PB币
2430
贡献
0
技术
64
活跃
1516
发表于 2020-10-31 21:56:34 |显示全部楼层


请求大神写一个   bat 。。
作用:删除指定的文件夹中包括其下的所有子文件夹中)从当前日期算起30天前修改过的所有文件,而保留30天内修改过程的所有文件。。。


百度了半天没有搞定。。。



数灵

Rank: 7Rank: 7Rank: 7

UID
1513687
帖子
2306
PB币
320
贡献
0
技术
62
活跃
1314
发表于 2020-10-31 22:05:00 |显示全部楼层
https://blog.51cto.com/xoxox/412462

Rank: 11Rank: 11Rank: 11

UID
682716
帖子
11070
PB币
10173
贡献
0
技术
0
活跃
2123
发表于 2020-10-31 22:30:42 |显示全部楼层
olsoul 发表于 2020-10-31 22:05
https://blog.51cto.com/xoxox/412462

没有解析

数灵

Rank: 7Rank: 7Rank: 7

UID
1513687
帖子
2306
PB币
320
贡献
0
技术
62
活跃
1314
发表于 2020-10-31 22:42:27 |显示全部楼层
forfiles /p D:\111 /s /D -30 /c "cmd /c del @file"
D:\111 这个改成你的那个文件夹的路劲
搞定

点评

xinxinlinux  你这么优秀,让我们咋混 :)  发表于 2020-11-1 08:38
3

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
3050007
帖子
525
PB币
690
贡献
0
技术
0
活跃
1530
发表于 2020-10-31 22:56:19 |显示全部楼层
olsoul 发表于 2020-10-31 22:42
forfiles /p D:\111 /s /D -30 /c "cmd /c del @file"
D:\111 这个改成你的那个文件夹的路劲
搞定

非常好

不过你这个包含目录,虽然del命令删不了目录,最后结果能达到目的,但我还是忍不住小改一下,排除目录。

forfiles /p 这里填你指定文件夹的完整路径 /S /M *.* /D -30 /c "cmd /c del @file"

班门弄斧了,希望不要见笑
2

查看全部评分

社区管理员

Rank: 2Rank: 2

UID
4813407
帖子
91
PB币
155
贡献
0
技术
0
活跃
195
发表于 2020-10-31 22:56:23 |显示全部楼层
这也太

Rank: 5Rank: 5Rank: 5

UID
3050007
帖子
525
PB币
690
贡献
0
技术
0
活跃
1530
发表于 2020-10-31 22:57:08 |显示全部楼层
涉及删除文件,如果文件比较重要,还是建议楼主先用下面的命令看看列出的文件,确认是不是你要删除的,
最后才运行上面的命令。

forfiles /p 这里填你指定文件夹的完整路径 /S /M *.* /D -30 /c "cmd /c echo @file"

Rank: 11Rank: 11Rank: 11

UID
4819662
帖子
11316
PB币
480
贡献
0
技术
60
活跃
6212

远景开发达人

发表于 2020-10-31 23:16:13 |显示全部楼层
能搜到方法啊,可能是楼主搜索关键词不对?

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1344
PB币
1521
贡献
0
技术
23
活跃
2134
发表于 2020-10-31 23:20:05 |显示全部楼层
谢谢。又了解了一个系统命令。之前从来没用过这个命令。搜索了解了一下,这个命令是windows server 2003开始有的,是个外部命令。

Rank: 5Rank: 5Rank: 5

UID
549512
帖子
609
PB币
755
贡献
0
技术
0
活跃
1095
发表于 2020-11-1 06:46:06 |显示全部楼层
windows自己的搜索功能就能实现,在文件管理器的搜索中写:      修改日期:<2020-10-1

数灵

Rank: 7Rank: 7Rank: 7

UID
1513687
帖子
2306
PB币
320
贡献
0
技术
62
活跃
1314
发表于 2020-11-1 08:01:19 |显示全部楼层
ranxudong 发表于 2020-11-1 06:46
windows自己的搜索功能就能实现,在文件管理器的搜索中写:      修改日期:

2020-10-30的在搜索结果里出现了,不知道怎么回事,是不是这个内容得改改?
要是判断会出问题的话,按你来说,其实还可以搜*,然后按日期排列好了

Rank: 5Rank: 5Rank: 5

UID
480291
帖子
573
PB币
848
贡献
0
技术
0
活跃
404
发表于 2020-11-1 08:07:03 |显示全部楼层
来学习了,看看

Rank: 7Rank: 7Rank: 7

UID
1808920
帖子
1940
PB币
2430
贡献
0
技术
64
活跃
1516
发表于 2020-11-1 08:14:41 |显示全部楼层
lps4290 发表于 2020-10-31 22:56
非常好

不过你这个包含目录,虽然del命令删不了目录,最后结果能达到目的,但我还是忍不住小 ...

这样可以了。。。但是带来一个问题。。就是如果一个目录中的文件全超期了。。运行后这么目录就成了空目录。。。

那么,大神可否继续。。。就是删除指定目录中的所有空目录。。(空目录中有下级空目录的话,也要删除。。。)

如果可以就完美了。。。。

谨求赐教.........

Rank: 9

UID
365049
帖子
4760
PB币
275
贡献
0
技术
0
活跃
2292
发表于 2020-11-1 08:15:35 |显示全部楼层
受教啦。
这些新的DOS命令哪里有介绍

山中何事?松花酿酒,春水煎茶。

Rank: 11Rank: 11Rank: 11

UID
1638437
帖子
6469
PB币
42
贡献
0
技术
90
活跃
2709
发表于 2020-11-1 08:59:22 |显示全部楼层
tomok 发表于 2020-11-1 08:15
受教啦。
这些新的DOS命令哪里有介绍

找了一个比较全的,在这里:
https://www.cnblogs.com/wyt007/p/9390567.html
mht格式收藏在电脑里得了,不常用的话,这么多命令根本记不下来,记下来也很快就忘。

Rank: 2Rank: 2

UID
794912
帖子
421
PB币
391
贡献
0
技术
8
活跃
406
发表于 2020-11-1 12:40:34 |显示全部楼层
本帖最后由 chiannet 于 2020-11-1 13:18 编辑

REM 不用forfile 命令走一波,第四行为具体路径(本批处理搜当前目录及其子目录)。











Rank: 2Rank: 2

UID
794912
帖子
421
PB币
391
贡献
0
技术
8
活跃
406
发表于 2020-11-1 13:19:06 |显示全部楼层
本帖最后由 chiannet 于 2020-11-1 17:55 编辑

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
CALL :SECS "%DATE:~0,10% %TIME:~0,8%"
SET /A SN=%SECS%
CLS
ECHO 基准时间:%DATE:~0,10% %TIME:~0,5%。
FOR /F "DELIMS=" %%Y IN ('DIR "%~DP0"  /S /B /A:-D') DO (
        CALL :SECS "%%~TY:00"       
        SET /A ZM=%SN%-!SECS!
        IF !ZM! GTR 2592000 (ECHO 修改时间:%%~TY  超过30天啦!^<----------“%%Y”
        REM DEL "%%Y" /F /Q >NUL
        )
        REM 30(天)*24(时/天)*60(分/时)*60(秒/分)=2592000(秒)
)
FOR /F "TOKENS=*" %%I IN ('DIR /S /B /AD^|SORT /R') DO RD "%%I" >NUL 2>NUL
PAUSE&EXIT

:SECS
REM 计算从1970年初至指定日期时间所经过的秒数(SECS):     CALL:SECS "YYYY/NN/DD HH:MM:SS"
FOR /F "TOKENS=1-6 DELIMS=:,/, " %%A IN ('ECHO %~1') DO (
        SET /A YP=0
        SET /A TM=%%A-1 2>NUL
        IF !TM! GTR 0 (FOR /L %%I IN (1970,1,!TM!) DO (
                CALL :RY %%I
                IF "!RRR!"=="Y" SET /A YP+=1
        ))
        SET /A DAYS=%%A*365-1970*365+!YP! 2>NUL
        REM 此刻的!DAYS!为“从1970年初至指定年份的前一年末,经历的总天数。”

        IF %%B GTR 1 (SET /A TM=%%B-1 2>NUL
                SET /A DAYS=!DAYS!+!TM!*30
                FOR /L %%I IN (1,1,!TM!) DO (FOR %%K IN (1 3 5 7 8 10) DO (IF %%I EQU %%K SET /A DAYS+=1))
        )       
        IF %%B GTR 2 (CALL :RY %%A&IF "!RRR!"=="Y" (SET /A DAYS-=1) ELSE (SET /A DAYS-=2))
        REM 此刻的!DAYS!为“从1970年初到指定月份的前一月末 ,经历的总天数。”

        SET /A DAYS=!DAYS!+%%C-1
        REM 此刻的!DAYS!为“从1970年初到指定日期的前一日末 ,经历的完整总天数。”

        SET /A SECS=!DAYS!*24*60*60+%%D*60*60+%%E*60+%%F 2>NUL       
)       
GOTO :EOF


:RY
REM 判断闰年的条件:四年一闰,百年不闰,四百年再闰:“1、能被4整除,但不能被100整除; 2、能被400整除”
SET RRR=N
SET /A N1=%1%%4
SET /A N2=%1%%100
SET /A N3=%1%%400
IF %N3% EQU 0 (SET RRR=Y)
IF %N1% EQU 0 (IF %N2% NEQ 0 (SET RRR=Y))
GOTO :EOF


点评

longsifeng  你字多。你是大神!  发表于 2020-11-1 14:36
Kitty-Katswell  For循环大法好,哈哈  发表于 2020-11-1 13:45
1

查看全部评分

Rank: 2Rank: 2

UID
1116025
帖子
481
PB币
1315
贡献
0
技术
0
活跃
821
发表于 2020-11-1 13:40:53 |显示全部楼层
各位大神好厉害

Rank: 7Rank: 7Rank: 7

UID
1808920
帖子
1940
PB币
2430
贡献
0
技术
64
活跃
1516
发表于 2020-11-1 14:18:32 |显示全部楼层
chiannet 发表于 2020-11-1 13:19
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
CALL :SECS "%DATE:~0,10% %TIME:~0,8%"

还有一个问题。。就是如果一个目录中的文件全超期了。。运行后这么目录就成了空目录。。。

那么,大神可否继续。。。就是删除指定目录中的所有空目录。。(空目录中有下级空目录的话,也要删除。。。)

如果可以就完美了。。。。

谨求赐教.........

Rank: 2Rank: 2

UID
794912
帖子
421
PB币
391
贡献
0
技术
8
活跃
406
发表于 2020-11-1 14:38:37 |显示全部楼层
gshwlj 发表于 2020-11-1 14:18
还有一个问题。。就是如果一个目录中的文件全超期了。。运行后这么目录就成了空目录。。。

那么,大神 ...

在17楼代码 “pause” 前插入一行,内容如下:
FOR /F "TOKENS=*" %%I IN ('DIR /S /B /AD^|SORT /R') DO RD "%%I"
回顶部
Copyright (C) 2005-2021 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件