Board logo

标题: [文件操作] 【已解决】求bat代码删除文件夹里面今天创建的(全部)文件 [打印本页]

作者: yyz219    时间: 2024-12-15 08:10     标题: 【已解决】求bat代码删除文件夹里面今天创建的(全部)文件

完美解决:
  1. @echo off &cd /d "D:\2新机器"
  2. for /f "tokens=3* delims= " %%a in (
  3.    'dir /s/a-d/tc/o-d^|findstr /bc:"%date:~,10%" '
  4. ) do for /f "delims=" %%F in ('dir/b/s "%%b" ') do del/q "%%F"
  5. pause&exit/b
复制代码

=================================================
原来的问题:
求bat:删除“D:\12文件夹(包括子文件夹)”里面今天创建的(全部)文件,谢谢
作者: aloha20200628    时间: 2024-12-15 09:10

回复 1# yyz219

已在此帖中回复 http://www.bathome.net/viewthrea ... =page%3D1#pid286369

作者: yyz219    时间: 2024-12-15 09:16

回复 2# aloha20200628


    成功了 非常感谢
作者: semiuel    时间: 2024-12-16 10:47

forfiles命令了解一下,一行命令就可以解决。

forfiles /p "D:\2新机器" /s /d 0 /c "cmd /c del /q @file"
作者: aloha20200628    时间: 2024-12-16 12:35


forfiles 是批处中的批处工具,用于处理某类问题相当简洁,但其时间控制是根据 ‘最后修改时间’,故采用 /d 0 参数会将 ‘当日创建和当日修改’ 一网打尽...

作者: 小白龙    时间: 2024-12-17 04:56

回复 4# semiuel


    多谢大佬分享, 下面是ai解释

这段代码使用的是 forfiles 命令,它是 Windows 命令行中的一个工具,用于处理文件和目录。以下是对这段代码的详细解释:

代码解释:
forfiles /p "D:\2新机器" /s /d 0 /c "cmd /c del /q @file"
各部分的含义:
forfiles:

这是一个 Windows 命令,用来遍历指定目录中的文件,并对每个文件执行指定的操作。
/p "D:\2新机器":

-p(或 /p)用于指定要处理的根目录。"D:\2新机器" 是要遍历的目标目录路径。
/s:

-s 表示递归地遍历子目录。这意味着不仅会处理 D:\2新机器 目录中的文件,还会处理该目录下所有子目录中的文件。
/d 0:

-d 后跟数字表示“日期”条件。0 表示今天的日期(即仅处理今天修改过的文件)。因此,/d 0 表示只处理今天修改过的文件。
如果想要删除今天及之前修改的文件,可以使用该选项。
/c "cmd /c del /q @file":

-c 后跟一个命令,指定对每个文件执行的操作。此处是 "cmd /c del /q @file",意思是:
cmd /c:在执行完命令后关闭命令提示符。
del /q:删除文件并且不显示删除确认信息(/q 是“静默模式”)。
@file:代表当前正在处理的文件的路径和文件名。每当遍历到一个文件时,@file 会被替换为该文件的路径。
总结:
这段代码的作用是:

遍历 D:\2新机器 目录及其所有子目录。
查找今天修改过的文件(/d 0)。
对每个找到的文件,执行删除操作 (del),并且不显示删除确认 (/q)。
注意事项:
这段命令会删除符合条件的文件,请确保你不希望删除的文件不会被误删除。
如果要删除的文件很多,执行时间可能会较长。
这条命令是不可恢复的,因此在执行之前,最好备份重要文件。
作者: semiuel    时间: 2024-12-17 16:03

回复 6# 小白龙


    AI回复的好详细。
不过确实如5楼大佬说的那样,这条命令不光删除今天创建的文件,还会删除今天修改的文件。
所以请谨慎操作。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2