命令行大全

forfiles

小猪老师 发表于 2020-06-22 18:01浏览次数:

forfiles命令选择一个或多个文件,并对它们执行另一个命令。 它可以选择文件的标准,包括文件名和修改时间。 它可以在命令行中使用,也可以作为批处理作业的一部分。

查看英文版

目录:

1 forfiles 运行系统环境

2 forfiles 语法

3 forfiles 示例

forfiles 运行系统环境

Windows vista

Windows 7

Windows 8

Windows 10

Windows NT

forfiles 语法

FORFILES [/P pathname] [/M searchmask] [/S] [/C command]
         [/D [+ | -]{MM/DD/YYYY | dd}]
/P pathname 开始搜索文件的路径。如果未指定,则使用当前目录(.)。
/M searchmask

搜索名称与搜索掩码searchmask匹配的文件(以及目录,如果指定了/S选项)。

其中可能包含通配符。

默认的搜索掩码是“*”(星号),它匹配所有的文件和目录。

/S 递归到子目录中,如“DIR /S”。
 /C command 在每个文件上执行命令,其中命令是命令字符串,用双引号括起来。

默认命令是“cmd /c echo @file”,它显示文件的名称。

以下变量可以在命令字符串中使用:

@file—返回文件的名称,不包含路径信息。
@fname—返回不带扩展名的文件名。
如果文件有多个扩展名,例如file.txt。
doc,只有后面的扩展名被截断,例如file.txt的结果。
@ext—只返回文件的扩展名。
如果文件有多个扩展名,则只返回后面的扩展名。
@path—返回文件的完整路径,包括文件名。
@relpath—返回文件的相对路径。
@isdir——如果文件类型是目录,则返回TRUE,如果是文件,则返回FALSE。
@fsize—返回文件的大小,以字节为单位。
@fdate—返回文件的最后修改日期。
@ftime—返回文件的最后修改时间。

要在命令行中包含特殊字符,请对0xHH格式的字符使用十六进制代码

(例,对制表符使用0x09)。

所有命令都应该在前面加上“cmd /c”。

尽管如果命令是不需要参数的外部命令,可以省略它。

/D [+ | -]{MM/DD/YYYY | dd}

使用“MM/DD/YYYY”格式选择最后修改日期大于或等于指定日期(+)或小于或

等于指定日期(-)的文件。

也可以选择文件的最后修改日期大于或等于(+)当前日期加上“dd”天,或小于或等于(-)当前日期

减去“dd”天。

有效的“dd”天数可以是0-32768范围内的任何数字。
如果没有指定,则使用“+”作为默认符号。
FORFILES [/P pathname] [/M searchmask] [/S] [/C command]
         [/D [+ | -]{MM/DD/YYYY | dd}]
/P pathname The path to start searching for files. If not specified, the current directory (.) is used.
/M searchmask Searches files (and directories, if the /S option is specified) whose name matches a search mask searchmask, which may contain wildcards. The default search mask is "*" (an asterisk), which matches all files and directories.
/S Recurse into subdirectories, as with "DIR /S".
 /C command Execute command on each file where command is a command string, enclosed in double quotes.

The default command is "cmd /c echo @file", which displays the name of the file.

The following variables can be used in the command string:

@file – returns the name of the file, with no path information.
@fname – returns the file name without extension. If the file has multiple extensions, e.g., file.txt.doc, only the trailing extension is truncated, e.g., a result of file.txt.
@ext – returns only the extension of the file. If the file has more than one extension, only the trailing extension is returned.
@path – returns the full path of the file, including the file name.
@relpath – returns the relative path of the file.
@isdir – returns TRUE if a file type is a directory, and FALSE for files.
@fsize – returns the size of the file in bytes.
@fdate – returns the last modified date of the file.
@ftime – returns the last modified time of the file.

To include special characters in the command line, use the hexadecimal code for the character in 0xHH format (e.g., 0x09 for the tab character). All commands should be preceded with "cmd /c," although it can be omitted if the command is an external command which requires no arguments. (For a detailed explanation, see this thread on Stack Overflow.)
/D [+ | -]{MM/DD/YYYY | dd}] Selects files with a last modified date greater than or equal to (+), or less than or equal to (-), the specified date using the "MM/DD/YYYY" format. Can also select files with a last modified date greater than or equal to (+) the current date plus "dd" days, or less than or equal to (-) the current date minus "dd" days. A valid "dd " number of days can be any number in the range of 0–32768. "+" is taken as default sign if none is specified.

查看英文版

查看中文版

forfiles 示例

forfiles /d -30

列出当前目录中在过去30天内未被修改的任何文件的名称。

forfiles /d -30 /c "cmd /c echo @path @fdate"

与上面的命令相同,但是显示带有文件名的完整路径,以及文件最后修改的日期。

forfiles /d +"03/15/2018"

列出当前目录中2018年3月15日以后修改的所有文件。

forfiles /d -"03/15/2018"

列出当前目录中2018年3月15日以后未修改的所有文件。

forfiles /m "*.txt" /c "cmd /c notepad @file"

对于当前目录中扩展名为.txt(文本文件)的每个文件,使用记事本打开该文件。

forfiles /m "*.jpg" /c "cmd /c mspaint @file"

对于当前目录中扩展名为.jpg (JPEG文件)的每个文件,使用Microsoft Paint打开该文件。

forfiles /s /p "C:\Users\myuser\Downloads" /m "*.zip" /d -"03/15/2018" /c "cmd /c move @path C:\oldfiles"

对于c:users失败myuser失败下载中的每个.zip (zip文件)或其子目录,如果该文件最后一次修改是在2018年3月15日之前,则将其移动到目录C:\oldfiles。

forfiles /s /p "C:\Users\myuser\backups" /m "*.zip" /d -90 /c "cmd /c del @path"

对于c:users失败myuser失败目录下的每个zip文件或其子目录,如果该文件在过去90天内没有被修改,则删除它。

forfiles /s /p . /m "*.zip" /c "cmd /c move @file @fname"

对于当前目录和所有子目录中的每个文件,删除文件名的扩展名(如果存在)。
如果文件名有多个扩展名,则只删除最后一个。例如,file.bak将被重命名为file, file.doc.bak将被重命名为file.doc。

forfiles /d -30

List the name of any file in the current directory that has not been modified in the last 30 days.

forfiles /d -30 /c "cmd /c echo @path @fdate"

Same as the command above, but displays the complete path with file name, and the date of the file's last modification.

forfiles /d +"03/15/2018"

List all files in the current directory modified after March 15, 2018.

forfiles /d -"03/15/2018"

List all files in the current directory not modified after March 15, 2018.

forfiles /m "*.txt" /c "cmd /c notepad @file"

For each file in the current directory with the extension .txt (text files), open the file using Notepad.

forfiles /m "*.jpg" /c "cmd /c mspaint @file"

For each file in the current directory with the extension .jpg (JPEG files), open the file using Microsoft Paint.

forfiles /s /p "C:\Users\myuser\Downloads" /m "*.zip" /d -"03/15/2018" /c "cmd /c move @path C:\oldfiles"

For each .zip (zip files) in C:\Users\myuser\Downloads or its subdirectories, if the file was last modified before March 15, 2018, move it to the directory C:\oldfiles.

forfiles /s /p "C:\Users\myuser\backups" /m "*.zip" /d -90 /c "cmd /c del @path"

For each zip file in the directory C:\Users\myuser\backups or its subdirectories, if the file has not been modified in the last 90 days, delete it.

forfiles /s /p . /m "*.zip" /c "cmd /c move @file @fname"

For each file in the current directory and all subdirectories, remove the file name extension from the file name, if it exists. If the file name has multiple extensions, only the last one is removed. For instance, file.bak would be renamed to file, and file.doc.bak would be renamed to file.doc.

查看英文版

查看中文版