![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 08:35 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 与 FOR 相似的 Windows 2003 的新命令行工具 Forfiles |
| 可打印版本 1,048 / 13 |
| 第1楼 6622186 | 发表于 2007-06-17 15:42 |
| 高级用户 发帖 411 积分 894 | |
|
与 FOR 相似的 Windows 2003 的新命令行工具 Forfiles 下了一个 Windows 2003 的新命令行工具 .
************************************************************** 命令:Forfiles 功能:从文件夹或文件树中选择要进行批处理的文件,也就是说,它能将搜索到的文件作为参数传递给后面的DOS命令,从而对搜索到的文件进行改名、删除、复制等操作。与DOS下的“For…In…Do”作用类似,但功能更强大。 语法:forfiles ] 参数:/p Path——指定搜索路径,表明要从哪里开始搜索,默认的文件夹是当前工作目录; /m SearchMask——按照 SearchMask设置的文件名参数搜索文件。默认的 SearchMask 是.,即所有文件,可使用通配符(?和)。比如:.exe表示搜索所有扩展名是.exe的文件、e??.表示搜索首字符是e、主文件名只有3个字符的所有文件; /s——在所有的子目录中进行搜索; /c Command——对搜索到的每个文件上实施指定的命令。带有空格的命令字符串必须用引号括起来。默认的命令是“'cmd /c echo @file'”,即显示全称文件名,包括路径、主文件名、扩展名等; /d ——选择日期大于或等于 (+)或者小于或等于 (-)指定日期的文件。 实例:①清除D盘下的所有扩展名是.tmp的文件,请键入以下命令: forfiles /p d: /m .tmp /s /c "cmd /c del @file" ②将D盘下的所有扩展名是.jpg的文件扩展名改为.gg: forfiles /p d: /m *.jpg /s /c "cmd /c ren @file *.gg" ③只查找并显示盘目录: forfiles /p c: /s /m . /c "cmd /c if @isdir==true echo @file is a directory" 该命令行可以将C盘下的所有目录查找出来,并显示为类似“XXXX is a directory”的格式。 |
|
| 第2楼 6622186 | 发表于 2007-06-17 15:45 |
| 高级用户 发帖 411 积分 894 | |
|
我感觉比 FOR 容易上手. 是不是比 FOR 强大, 我就不知道了.
|
|
| 第3楼 zh159 | 发表于 2007-06-17 15:48 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
看名字感觉像是专门对文件操作的,如果是这样,灵活性好像不如for
|
|
| 第4楼 6622186 | 发表于 2007-06-17 15:51 |
| 高级用户 发帖 411 积分 894 | |
|
无法上传?
|
|
| 第5楼 6622186 | 发表于 2007-06-17 16:12 |
| 高级用户 发帖 411 积分 894 | |
|
似乎没 For 复杂, 还有 For 的 /l 参数, 恐怕难以实现, 可能如3楼所说, 专门对文件操作.
|
|
| 第6楼 ansipeter | 发表于 2007-06-17 19:47 |
| 中级用户 发帖 130 积分 269 | |
|
你们还是看看下面的帮助吧,这个跟FOR语句还是有很大差别的,主要是对多文件的操作,还有类似@FILE这样的参数,相信看完如下帮助你们就会掌握了
FORFILES.exe (Resource Kit) Batch process multiple files syntax FORFILES [-pPath] [-s] [-dDate] [-mMask] [-cCommand] key -Path : Path to search default=current folder -s : Recurse into sub-folders -Date : This can be +DDMMYY to select files newer than a given date (filedate >=DDMMYY) or -DDMMYY to select files older than a given date (filedate <=DDMMYY) or +DD to select files newer than DD days ago or -DD to select files older than DD days ago -Mask : Search mask (wildcards allowed) default=*.* -Command : Command to execute on each file. default="CMD /C Echo @FILE" -v : Verbose report The following variables can be used in -cCommand (must be upper case) @FILE, @FNAME_WITHOUT_EXT, @EXT, @PATH, @RELPATH, @ISDIR, @FSIZE, @FDATE, @FTIME To ECHO Hex characters in the Command use: 0xHH Examples: To find every text file on the C: driveFORFILES -pC:\ -s -m*.TXT -c"CMD /C Echo @FILE is a text file"To show the path of every HTML file on the C: drive FORFILES -pC:\ -s -m*.HTML -c"CMD /C Echo @RELPATH is the location of @FILE"List every folder on the C: driveFORFILES -pC:\ -s -m*. -c"CMD /C if @ISDIR==TRUE echo @FILE is a folder"For every file on the C: drive list the file extension in double quotesFORFILES -pc:\ -s -m*.* -c"CMD /c echo extension of @FILE is 0x22@EXT0x22" List every file on the C: drive last modified over 100 days ago FORFILES -pc:\ -s -m*.* -d-100 -c"CMD /C Echo @FILE : date >= 100 days"Find files last modified before 01-Jan-1995 FORFILES -pc:\ -s -m*.* -d-010195 -c"CMD /C Echo @FILE is quite old!" note: '0x22' is hex 22 - the double quote character - put these around any long filenames |
|
| 第7楼 vkill | 发表于 2007-06-17 20:01 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
怎么和 for 相似那?楼主貌似不常用for
|
|
| 第8楼 wangjf | 发表于 2007-06-18 10:34 |
| 中级用户 发帖 63 积分 254 | |
|
Windows2003 SP2中的FORFILES.EXE文件的帮助显示
Microsoft Windows (C) 版权所有 1985-2003 Microsoft Corp. forfiles /? ============================================= FORFILES {yyyy-MM-dd | dd}] 描述: 选择一个文件(或一组文件)并在那个文件上 执行一个命令。这有助于批处理作业。 参数列表: /P pathname 表示开始搜索的路径。默认文件夹是当前工作的 目录 (.)。 /M searchmask 根据搜索掩码搜索文件。默认搜索掩码是 '*'。 /S 指导 forfiles 递归到子目录。像 "DIR /S"。 /C command 表示为每个文件执行的命令。命令字符串应该 用双引号括起来。 默认命令是 "cmd /c echo @file"。下列变量 可以用在命令字符串中: @file - 返回文件名。 @fname - 返回不带扩展名的文件名。 @ext - 只返回文件的扩展。 @path - 返回文件的完整路径。 @relpath - 返回文件的相对路径。 @isdir - 如果文件类型是目录,返回 "TRUE"; 如果是文件,返回 "FALSE"。 @fsize - 以字节为单位返回文件大小。 @fdate - 返回文件上一次修改的日期。 @ftime - 返回文件上一次修改的时间。 要在命令行包括特殊字符,字符请以 0xHH 形式使用十六进制代码(例如,0x09 为 tab)。 内部 CMD.exe 命令前面应以 "cmd /c" 开始。 /D date 选择文件,其上一次修改日期大于或等于 (+), 或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日期; 或选择文件,其上一次修改日期大于或等于 (+) 当前日期加 "dd" 天,或者小于或等于 (-) 当前 日期减 "dd" 天。有效的 "dd" 天数可以是 0 - 32768 范围内的任何数字。如果没有指定, "+" 被当作默认符号。 /? 显示帮助消息。 例如: FORFILES /? FORFILES FORFILES /P C:\WINDOWS /S /M DNS*.* FORFILES /S /M *.txt /C "cmd /c type @file | more" FORFILES /P C:\ /S /M *.bat FORFILES /D -30 /M *.exe /C "cmd /c echo @path 0x09 在 30 前就被更改。" FORFILES /D 2001-01-01 /C "cmd /c echo @fname 在 2001年1月1日就是新的。" FORFILES /D +2007-6-18 /C "cmd /c echo @fname 今天是新的。" FORFILES /M *.exe /D +1 FORFILES /S /M *.doc /C "cmd /c echo @fsize" FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file" ============================================ 已经上传。地址: http://zhenlove.com.cn/cndos/fileup/files/forfiles.zip [ Last edited by wangjf on 2007-6-18 at 10:42 AM ] |
|
| 第9楼 6622186 | 发表于 2007-06-18 17:18 |
| 高级用户 发帖 411 积分 894 | |
|
8 楼, 我怎么传不上去?
|
|
| 第10楼 wangjf | 发表于 2007-06-18 17:50 |
| 中级用户 发帖 63 积分 254 | |
![]() 我也不知道。 |
|
| 第11楼 6622186 | 发表于 2007-06-23 22:20 |
| 高级用户 发帖 411 积分 894 | |
|
大家用过, 是否好用?
|
|
| 第12楼 yk80 | 发表于 2008-01-24 16:43 |
| 初级用户 发帖 11 积分 26 | |
|
forfiles 只是对修改日期的前后进行判断,如果我要用创建日期进行判断该怎么处理呢?
|
|
| 第13楼 knoppix7 | 发表于 2008-01-24 16:55 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
用any2hex转换后 直接粘贴上来.
貌似上传系统XX了.. |
|
| 第14楼 yk80 | 发表于 2008-01-25 13:06 |
| 初级用户 发帖 11 积分 26 | |
Originally posted by knoppix7 at 2008-1-24 04:55 PM: any2hex是个转换命令吗 ,怎么个用法! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |