以下命令行列出了当前目录和所有子文件夹中的每个 .JS
文件,而不仅仅是我预期的在过去 10 天内最后修改的文件。
FORFILES /S /D -10 /M *.js /C "cmd /c echo @path"
而此命令仅列出.JS
2/20/2022 或之后修改的文件。
FORFILES /S /D 2/20/2022 /M *.js /C "cmd /c echo @path"
任何想法为什么使用该选项/D -10
不会产生预期的输出?
在命令提示符窗口中执行以forfiles /?
在 Windows 上显示使用帮助结果,语言为English US ,但为用户帐户配置了区域/国家/格式German (Austria)/D
,用于输出中的选项:
选择最后修改日期大于等于(+),或者小于等于(-)的文件,指定日期使用“dd.MM.yyyy”格式;或选择最后修改日期大于或等于 (+) 当前日期加上“dd”天,或小于或等于 (-) 当前日期减去“dd”天的文件。有效的“dd”天数可以是 0 - 32768 范围内的任何数字。如果未指定,“+”将作为默认符号。
日期格式取决于地区。
dd.MM.yyyy
方法:
01
to 31
。01
to 12
。2022
.以国际日期格式指定日期在yyyy-MM-dd
我的 PC 上出现错误消息:
错误:指定的日期无效。
输入“FORFILES /?” 供使用。
为了更好地理解一些例子:
forfiles /D 13.08.2021
forfiles /D +13.08.2021
这将输出最后修改日期更新(大于)或等于2021 年8 月 13日的所有文件系统条目(文件和目录名称) 。
forfiles /D -13.08.2021
这将输出最后修改日期早于(小于)或等于2021 年8 月 13日的所有文件系统条目(文件和目录名称) 。
forfiles /D -10
这将输出上次修改日期早于(小于)或等于2022 年2 月 16日(当前日期为 2022 年 2 月 26日)的所有文件系统条目(文件和目录名称26.02.2022
)。
forfiles /D 10
forfiles /D +10
这将输出上次修改日期更新(大于)或等于2022 年3 月 8日(当前日期为 2022 年 2 月 26日)的所有文件系统条目(文件和目录名称26.02.2022
)。如果当前日期是正确的,那么这样的日期规范在大多数情况下没有多大意义,因此具有未来日期的文件/文件夹很可能根本不存在。因此,这样的日期规范通常会导致错误消息:
错误:未找到具有指定搜索条件的文件。
更多提示:
文件/文件夹名称始终是包含在"
其中的输出,例如在批处理文件中使用时需要了解:
@echo off
echo The following files are older than nine days:
echo/
for /F "delims=" %%I in ('%SystemRoot%\System32\forfiles.exe /D -10 2^>nul') do if not exist "%%~I\" echo %%I
即使使用 option ,文件/文件夹名称也不会随路径一起输出/S
。
因此,使用 FORFILES 选项而不是使用FORFILES选项来捕获forfilesfor /F
的输出以更有效地进一步处理文件/文件夹对于使用选项在当前目录的子目录中分别搜索FORFILES选项指定的目录是没有意义的。cmd.exe
/C
/S
/P
不带选项的FORFILES的使用毫无意义,因为在这种情况下,使用Windows 命令处理器cmd的/D
内部命令总是更有效,而且绝对更好。
forfiles.exe
默认情况下,在 Windows XP 和较旧的 Windows 客户端版本上不存在。forfiles.exe
在 Windows Server 2003 的 Windows system32 目录中,可以将其复制到装有 Windows XP 的 PC 的 Windows system32 目录中。Windows Server 2003 使用与 Windows XP 相同的内核。
顺便说一句: Windows Server 2003choice.exe
的robocopy.exe
Windows system32 目录也可以复制到 Windows XP 的 Windows system32 目录,因为在 Windows XP 上默认也不存在。
PS:目录用于文件系统,如 NTFS、FAT12、FAT16、FAT32、exFAT 具有属性的文件d
。