forfiles命令的基本语法与示例

forfiles 是一个强大的Windows命令行工具,用于遍历目录结构中的文件,并对符合条件的文件执行命令。它特别适合用于批处理文件、系统维护脚本和自动化任务中,例如文件清理、权限更改或文件移动等操作。

forfiles 命令的基本语法:

FORFILES [/P path] [/M mask] [/S] [/D {+|-}date] [/C command]

参数解释:

  • /P path:指定开始搜索的根目录路径。如果省略,则默认为当前目录。
  • /M mask:指定要搜索的文件名掩码(通配符)。例如,*.txt 将匹配所有 .txt 文件。
  • /S:指示 forfiles 遍历子目录,查找匹配的文件。
  • /D {+|-}date:根据文件的最后修改日期筛选文件。+ 或 - 后跟日期(格式为 yyyy/MM/dd 或 dd)表示文件最后修改日期比给定日期更晚或更早。
  • /C command:指定要对找到的每个文件执行的命令。命令中可以使用特殊参数 @file、@path、@fsize 等来引用文件名、完整路径、文件大小。

举例说明:

假设我们想要删除当前目录及其子目录中所有最后修改日期超过30天的 .log 文件。

删除旧的日志文件:
forfiles /P %CD% /M *.log /S /D -30 /C "cmd /c del @path"

在这个例子中:

  • %CD% 是当前目录。
  • *.log 匹配所有 .log 文件。
  • /S 表示搜索当前目录及其所有子目录。
  • /D -30 表示只考虑最后修改日期在30天之前的文件。
  • /C "cmd /c del @path" 表示使用 del 命令删除文件,其中 @path 是 forfiles 提供的参数,代表当前处理的文件的完整路径。
更改文件权限:

如果你想更改当前目录及其子目录下所有 .docx 文件的权限,使其可读但不可写,可以使用以下命令:

forfiles /P %CD% /M *.docx /S /C "cmd /c icacls @path /inheritance:r /grant administrators:(R) /t"

在这个例子中,icacls 命令被用来更改文件权限。

复制文件到另一个目录:

假设我们要将当前目录下的所有 .jpg 文件复制到 D:\MyPhotos 目录:

forfiles /P %CD% /M *.jpg /C "cmd /c copy @path d:\MyPhotos"

请注意,在实际使用中,可能需要创建 D:\MyPhotos 目录,如果它还不存在的话。

forfiles 命令的 /C 参数中,你可以使用一些特殊的替换参数来引用文件的各种属性。以下是一些常用的替换参数及其含义:

变量描述
@file返回匹配项的名称,双引号。
@fname返回匹配项的基名(没有文件扩展名),双引号。
@ext

返回文件扩展名,双引号,没有前导点。如果文件有多个扩展名,则只返回最后一个。

如果文件没有扩展名,则返回带引号的空字符串。

@path返回匹配项的完整路径,双引号,包括驱动器号和文件扩展名(如果有)。
@relpath

返回匹配项的相对路径,双引号和相对于起始目录(由/ P给出)。

每个路径以点和反斜杠(.\)开头。

@isdir如果文件类型是目录,返回 TRUE,否则返回 FALSE。
@fsize返回用字节表示的文件大小
@fdate返回文件上次修改的日期,采用当前用户的本地化日期格式。
@ftime返回文件上次修改时间,采用当前用户的本地化时间格式。

这些参数可以被嵌入到 /C 参数指定的命令中,用来动态生成针对每个文件的具体命令。

显示文件名和大小

forfiles /P C:\mydir /M *.txt /C "cmd /c echo 文件名: @file, 大小: @fsize 字节"
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值