forfiles命令详解

forfiles命令用法:

forfiles是一款 windows 平台的软件工具,其中选择文件并运行一个命令来操作文件。文件选择标准包括名称和上次修改日期。命令说明符支持一些特殊的语法选项。它可以直接在命令行中使用,也可以在批处理文件或其他脚本中使用。

该forfiles命令最初作为加载项提供在Windows NT 资源工具包中。它成为Windows Vista的标准实用程序,作为新管理功能的一部分。

Forfiles:从文件夹或树中选择要进行批处理的文件。

语法

forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]

参数说明

forfiles命令有几个命令行选项。如果没有给出选项或参数,它将输出当前目录中每个文件的名称。下面对一些参数进行简单介绍:

/p Path
指定 Path,指定要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号 (.) 指定。

注:
1.路径应该由反斜杠分割,如D:\rui\test
2.不接受UNC路径(\ machine \ share)

/m SearchMask
按照 SearchMask 搜索文件。默认的 SearchMask 是 *.*。

例如:我们想搜索rar文件 可以写为 /m *.rar

/s
指示 forfiles 在子目录中搜索。默认情况下仅搜索单个指定目录。

注:如果不加此参数,只操作指定目录下这一级,反之指定目录下所有层级目录中的文件都会被操作。

/c Command
在每个匹配的文件上运行指定的 Command,带有空格的命令字符串必须用双引号括起来。默认的 Command 是 “cmd /c echo @file”。

/d[{+ | -}] [{MM/DD/YYYY | DD}]
根据上次修改日期选择文件。选择日期大于或等于 (+)(或者小于或等于 (-))指定日期的文件,有绝对日期和相对日期。

/?
显示帮助消息(简要使用说明)。禁止文件搜索/命令执行。不得与任何其它参数一起使用。

命令语法

下表列出了在 /c Command 命令字符串中能够使用的变量。

变量 描述
@file 返回匹配项的名称,双引号。
@fname 返回匹配项的基名(没有文件扩展名),双引号。
@ext 返回文件扩展名,双引号,没有前导点。如果文件有多个扩展名,则只返回最后一个。如果文件没有扩展名,则返回带引号的空字符串。
@path 返回匹配项的完整路径,双引号,包括驱动器号和文件扩展名(如果有)。
@relpath 返回匹配项的相对路径,双引号和相对于起始目录(由/ P给出)。每个路径以点和反斜杠(.\)开头。
@isdir 如果文件类型是目录,返回 TRUE,否则返回 FALSE。
@fsize 返回用字节表示的文件大小
@fdate 返回文件上次修改的日期,采用当前用户的本地化日期格式。
@ftime 返回文件上次修改时间,采用当前用户的本地化时间格式。

日期语法

在给定日期参数的情况下,日期参数(/ D)根据上次修改日期选择文件。

date参数可以作为文字日期给出,格式为MM / DD / YYYY(不接受其他日期格式)。可替代地,日期参数可以被给定为一个数字,在这种情况下,它被认为是指在日龄时(即,天日期当前日期的前几天)。

如果date参数以减号( - )开头,则仅选择在给定日期或之前修改的文件(较旧的文件/先前修改过)。否则,仅选择在给定日期或之后修改的文件(较年轻的文件/稍后修改)。可以给出显式加号(+),但这是默认值。请注意,两种模式都在给定日期选择文件。无法仅在给定日期选择文件(也不在之前或之后)。

示例

1.删除D:/rui下2天前的.bak的文件

forfiles /p D:\rui /s /m *.bak /d -2 /c "cmd /c del /f @path"

2.列出D盘上的所有.bat文件

forfiles /p D:\ /s /m *.bat /c "cmd /c echo @file"

--如果想加上说明文字,可以改动如下:
forfiles /p D:\ /s /m *.bat /c "cmd /c echo @file is a batch file"

3.列出D盘上的所有目录

forfiles /p D:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"

4.列出D盘上5天前的所有文件

forfiles /p D:\ /s /m *.* /d -5 /c "cmd /c echo @file : date >= 5 days"

5.列出D盘上2021年1月1日以前创建的文件,并显示“file is quite old!”

forfiles /p D:\ /s /m *.* /dt-01011993 /c "cmd /c echo @file file is quite old!"

6.按列格式列出D盘上所有文件的扩展名

forfiles /p D:\ /s /m *.* /c "cmd /c echo extension of @file is 0x09@ext0x09" 

forfiles命令详解_第1张图片

图片来源于网络

参考:
https://blog.csdn.net/sandy9919/article/details/82932460?locationNum=12&fps=1

你可能感兴趣的:(Windows,windows)