人生就像是在做无数的阅读理解题,完成一件事的前提,很大一部分首先是需要阅读理解,包括在直接听某人说,或者看某人写道。总之,完成一件事,首先会有多种各式各样的输入形式进行输进人的大脑。然后大脑做理解(翻译)将得到的拿去执行。所以,不管在生活或者工作亦或者是学习中,阅读理解都是人非常重要而且需要必配的能力。废话这么多....
没有想到还会接触到windows下cmd中的这个功能----forfiles。help_cmd_forfiles。这个命令的功能想是很多语言中的历遍功能。这是一个历遍查找某个/某类文件功能的命令。在windows自动备份/删除N天前类型的文件用得尤其广泛,也确实是很方便用。参数不多,就不再赘述。主要来看看forfiles中/C参数,这是forfiles调用WinNT中CMD命令的一个参数,格式为:
forfiles /c "cmd /c [start command in here]"
看前面的格式,调用的命令是从引号中的cmd /c 以后开始。例如:
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
echo @fsize 这个是执行的命令,这里有几个参数返回值,返回值是取自符合forfiles筛选条件的文件,下面是说明:
默认命令是 "cmd /c echo @file"。下列变量 可以用在命令字符串中: @file - 返回文件名。 @fname - 返回不带扩展名的文件名。 @ext - 只返回文件的扩展名。 @path - 返回文件的完整路径。 @relpath - 返回文件的相对路径。 @isdir - 如果文件类型是目录,返回 "TRUE"; 如果是文件,返回 "FALSE"。 @fsize - 以字节为单位返回文件大小。 @fdate - 返回文件上一次修改的日期。 @ftime - 返回文件上一次修改的时间。
下面是一个删除12天前的备份示例:
@echo off rem Record My backup log... if not exist D:\del_files.log start cd .>D:\del_files.log echo **Delete Expired Log Files![%date:~0,10% %time:~0,8%]**>> D:\del_files.log forfiles /p d:\test\ /m *.* /d -12 /c "cmd /c del @path @fsize>>del_files.log" echo -----Delete done! [%date:~0,10% %time:~0,8%]----->> D:\del_files.log echo -------------------------------------------->> D:\del_files.log exit
上面没有使用太多变量,可以使用变量来替换同一字符串来减少编写错误。