为什么带选项 /D -10 的 Windows FORFILES 找不到最近 10 天内最后修改的文件?
以下命令行列出了当前目录和所有子文件夹中的每个 .JS
文件,而不仅仅是我预期的过去 10 天内最后修改的文件。
FORFILES /S /D -10 /M *.js /C "cmd /c echo @path"
而此命令仅列出 2022 年 2 月 20 日或之后修改的 .JS
文件。
FORFILES /S /D 2/20/2022 /M *.js /C "cmd /c echo @path"
任何想法为什么使用选项 /D -10
不会产生预期的输出?
The following command line lists every .JS
file in the current directory and all subfolders, not just the files last modified in the previous 10 days as expected by me.
FORFILES /S /D -10 /M *.js /C "cmd /c echo @path"
Whereas this command lists only the .JS
files modified on or after 2/20/2022.
FORFILES /S /D 2/20/2022 /M *.js /C "cmd /c echo @path"
Any ideas why using the option /D -10
doesn't result in the expected output?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在命令提示符窗口中执行
forfiles /?
以在 Windows 上显示使用帮助结果,语言为 美国英语,但区域/国家/格式为德语 ( Austria) 为用户帐户配置,对于输出中的选项/D
:日期格式取决于区域。
dd.MM.yyyy
表示:01
到31< /代码>。
01
到12
。2022
。国际日期格式
yyyy-MM-dd
的日期规范会在我的电脑上显示错误消息:一些更好理解的示例:
这将输出最后修改日期较新(大于)或等于的所有文件系统条目(文件和目录名称) > 2021 年 8 月 13 日th。
这将输出上次修改日期早(小于)或等于八月2021 年 13 日。
这将输出上次修改日期早(小于)或等于的所有文件系统条目(文件和目录名称) 2022 年 2 月 16 日日,当前日期为 2022 年 2 月 26 日日 (
2022 年 2 月 26 日
)。这将输出最后修改日期更新(大于)或等于 2022 年 3 月 8 日日的所有文件系统条目(文件和目录名称)当前日期为 2022 年 2 月 26 日日 (
26.02.2022
)。如果当前日期正确,这样的日期规范在大多数情况下没有多大意义,因此具有未来日期的文件/文件夹很可能根本不存在。因此,这样的日期规范通常会导致错误消息:更多提示:
文件/文件夹名称始终以
"
形式输出,这对于在批处理文件中使用非常重要:<前><代码>@echo 关闭
echo 以下文件已超过 9 天:
回声/
for /F "delims=" %%I in ('%SystemRoot%\System32\forfiles.exe /D -10 2^>nul') 如果不存在则执行 "%%~I\" echo %%I
即使使用选项 <,文件/文件夹名称也不会随路径一起输出代码>/S。
因此,使用 forfiles 捕获输出code>for /F 使用
cmd.exe
进一步处理文件/文件夹,而不是使用 FORFILES 选项/C
使用选项/S
在当前目录的子目录中分别搜索使用 FORFILES 选项/P
指定的目录是没有意义的。 p>在没有选项
/D
的情况下使用FORFILES毫无意义,因为在这种情况下,使用内部命令用于Windows 命令处理器的 <一href="https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd" rel="nofollow noreferrer">cmd。forfiles.exe
在 Windows XP 和较旧的 Windows 客户端版本上不存在。可以将Windows Server 2003的Windows system32目录中的forfiles.exe
复制到Windows XP PC的Windows system32目录中。 Windows Server 2003 使用与 Windows XP 相同的内核。顺便说一句:Windows Server 2003的Windows system32目录中的
choice.exe
和robocopy.exe
也可以复制到Windows XP的Windows system32目录中,因为默认情况下不存在Windows XP 也是如此。PS:目录对于 NTFS、FAT12、FAT16、FAT32、exFAT 等文件系统来说是具有属性
d
的文件。The execution of
forfiles /?
in a command prompt window to show the usage help results on Windows with language English US, but with region/country/format German (Austria) configured for the user account, for option/D
in the output:The date format is region dependent.
dd.MM.yyyy
means:01
to31
.01
to12
.2022
.The specification of a date in international date format
yyyy-MM-dd
results on my PC in the error message:Some examples for a better understanding:
This outputs all file system entries (file and directory names) with last modification date newer (greater than) or equal August 13th, 2021.
This outputs all file system entries (file and directory names) with last modification date older (less than) or equal August 13th, 2021.
This outputs all file system entries (file and directory names) with last modification date older (less than) or equal February 16th, 2022 on current date being February 26th, 2022 (
26.02.2022
).This outputs all file system entries (file and directory names) with last modification date newer (greater than) or equal March 08th, 2022 on current date being February 26th, 2022 (
26.02.2022
). Such a date specification does not make much sense in most cases if the current date is correct and so files/folders with a future date do most likely not exist at all. So such a date specification results usually in the error message:Some more hints:
The file/folder names are always output enclosed in
"
which is important to know on using for example in a batch file:The file/folder names are never output with path even on using option
/S
.So capturing the output of forfiles using
for /F
for further processing the files/folders more efficient withcmd.exe
instead of using the FORFILES option/C
makes no sense on using option/S
to search also in subdirectories of the current directory respectively the directory specified with FORFILES option/P
.The usage of FORFILES without option
/D
makes never sense as in this case it is always more efficient and definitely better to use the internal command for of the Windows Command Processor cmd.forfiles.exe
does by default not exist on Windows XP and older Windows client versions.forfiles.exe
in Windows system32 directory of Windows Server 2003 can be copied to the Windows system32 directory of a PC with Windows XP. Windows Server 2003 uses the same kernel as Windows XP.By the way:
choice.exe
androbocopy.exe
in Windows system32 directory of Windows Server 2003 can be also copied to Windows system32 directory of Windows XP as not existing by default on Windows XP too.PS: A directory is for file systems like NTFS, FAT12, FAT16, FAT32, exFAT a file with the attribute
d
.