forfiles指令介绍
使用cmd命令遍历文件夹并对文件进行指定操作
使⽤cmd命令遍历⽂件夹并对⽂件进⾏指定操作
我们使⽤命令来遍历指定的⽂件夹。
forfiles命令的概览:
这是msdn中关于forfiles命令作⽤的说明概览,下⾯我们看⼀下具体的forfiles命令的语法:
备注:在forfiles命令的/c参数中可以使⽤如下变量:
通过上⾯的说明我们可以清楚的看到使⽤forfiles命令可以很⽅便的对⽂件或⽂件夹夹进⾏操作,
例如我们要对某个⽂件夹进⾏遍历并删除指定类型的⽂件:
例如在我的电脑的e盘test⽂件夹中有下⾯的⽂件,我想遍历⽂件夹内的⽂件并删除每⼀个⽂件,我们就可以这样来进⾏处理:
forfiles /p e:\test /c "cmd /c erase @path"
这⾥的 e:\test是我们要操作的⽂件夹,/c后⾯是要对⽂件夹中的每⼀个⽂件执⾏的操作。
上⾯的⽅法是遍历⽂件夹,删除了该⽂件夹内的所有⽂件,当然你可以直接⽤del命令去删除指定的⽂件夹内的⽂件,但是通过forfiles命令你可以对⽂件进⾏更复杂的操作,例如筛选指定⽇期的⽂件,或者批量为⽂件重命名等。
cmd命令 forfiles工具介绍
目录 (.)。
/M searchmask 根据搜索掩码搜索文件。默认搜索掩码是 '*'。
/S 指导 forfiles 递归到子目录。像 "DIR /S"。
FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
描述:
选择一个文件(或一组文件)并在那个文件上
执行一个命令。这有助于批处理作业。
参数列表:
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";
如果是文件,返回 "FALSE"。
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日就是新的。"
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
要在命令行包括特殊字符,字符请以 0xHH
或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日期;
或选择文件,其上一次修改日期大于或等于 (+)
当前日期加 "dd" 天,或者小于或等于 (-) 当前
forfiles命令详解
forfiles命令详解分类:WINDOWS删除三天前的文件forfiles /p i:\serverbak\2005 /s /m *.* /d -2 /c "cmd /c del @file"说明:forfiles是2003自带的命令,非常好用,详细可以forfiles/?查询。
可以复制到XP中使用,复制到2000中测试失败。
forfiles:/p 指定的路径/s 包括子目录/m 查找的文件名掩码/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期的7天前/c 运行的命令行表示为每个文件执行的命令。
命令字符串应该用双引号括起来。
默认命令是 "cmd /c echo @file"。
下列变量可以用在命令字符串中:@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
示例要列出驱动器 C: 上的所有批处理文件,请键入:forfiles /p c:\ /s /m*.bat /c"cmd /c echo @file is a batch file"要列出驱动器 C: 上的所有目录,请键入:forfiles /p c:\ /s /m*.* /c"cmd /c if @isdir==true echo @file is a directory"要列出驱动器 C: 上存在时间多于 100 天的所有文件,请键入:forfiles /p c:\ /s /m*.* /dt-100 /c"cmd /c echo @file :date >= 100 days"要列出驱动器 C: 上 1993 年 1 月 1 日以前创建的所有文件,而且对于日期早于 1993 年 1 月 1 日的文件显示“file is quite old!”,请键入:forfiles /p c:\ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!"要按列格式列出驱动器 C: 上所有文件的扩展名,请键入:forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is0x09@ext0x09" With:要列出驱动器 C: 上的所有批处理文件,请键入:forfiles /p c:\ /s /m *.bat /c "cmd /c echo @file is a batch file"要列出驱动器 C: 上的所有目录,请键入:forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"要列出驱动器 C: 上存在时间多于 100 天的所有文件,请键入:forfiles /p c:\ /s /m *.* /d t-100 /c "cmd /c echo @file :date >= 100 days"要列出驱动器 C: 上 1993 年 1 月 1 日以前创建的所有文件,而且对于日期早于 1993 年 1 月 1 日的文件显示“file is quite old!”,请键入:forfiles /p c:\ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"要按列格式列出驱动器 C: 上所有文件的扩展名,请键入:forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is0x09@ext0x09使用forfiles自动批量删除过期文件2012-02-23 17:48:02 我来说两句收藏我要投稿ftp服务器用于保存备份文件,但是也不需要每天的数据都留着,于是乎为了考虑节省硬盘空间,就必须删除一些老文件,只要保存最近一周或者一个月的就可以了windows自带了一个批量删除的程序,叫做forfiles,XP里貌似没有,博文最下面附件可以下载首先说一下我的应用吧,ftp服务器端每天备份数据文件后,只想保存最近两周的文件编写一个bat文件,内容如下写道@echo offrem write to logset filename=deletefile.logecho -------------------Delete Expired Log Files------------------------->>%filename%echo Start >>%filename%echo (%date% %time%) >>%filename%echo Delete the expired log files in 目标目录路径1, Pleasewait... >>%filename%forfiles.exe /p "D:\Kugou" /m *.tar /d -14 /c "cmd /c del @path"echo End >>%filename%echo (%date% %time%) >>%filename%不好意思,脚本是抄别人的,来自/67857/407482 关键命令就这一条了:forfiles.exe /p "D:\Kugou" /m *.tar /d -14 /c "cmd /c del @path"这条命令的意思就是,搜索D:/Kugou目录下的任意后缀名为tar的文件,查看其日期属性是否为14天之前的(-14表示之前,+14表示之后),然后执行删除命令一开始一直在纠结这日期格式是怎么弄的,是不是forfiles是通过匹配文件名来删除的,结果一直在改文件名的日期显示格式,后来才发现偶智商如此低下,人家forfiles是windows自带的,尼玛明显能够智能的匹配文件日期属性啊。
forfiles下令详解
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory" 要列出驱动器 C: 上存在时间多于 100 天的所有文件,请键入:
forfiles /p c:\ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!" 要按列格式列出驱动器 C: 上所有文件的扩展名,请键入:
forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09" With: 要列出驱动器 C: 上的所有批处理文件,请键入:
forfiles命令详解
分类: WINDOWS
删除三天前的文件
forfiles /p i:\serverbak\2005 /s /m *.* /d -2 /c "cmd /c del @file" 说明:forfiles是2003自带的命令,非常好用,详细可以forfiles/?查询。可以复 制到XP中使用,复制到2000中测试失败。 forfiles: /p 指定的路径 /s 包括子目录 /m 查找的文件名掩码 /d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前 /c 运行的命令行 表示为每个文件执行的命令。命令字符串应该用双引号括起来。
@fsize @fdate @ftime
bat文件for用法
bat文件for用法在 Windows 的批处理文件(.bat)中,`for` 是一个非常有用的命令,用于循环处理一系列文件或字符串。
以下是 `for` 命令的基本用法和一些示例:1. 基本的 FOR 结构:```batfor %variable in (set) do command [command-parameters]```这里 `%variable` 是每次循环中变化的变量,`set` 是要迭代的值集合,`command` 是要执行的命令。
2. 示例:假设我们有一个名为 `` 的文件,内容如下:``````我们想要为这些文件名执行一个命令,例如复制到另一个目录。
我们可以使用以下的批处理脚本来做到这一点:```batecho offfor %%a in (file) do (echo %%acopy "%%a" "C:\destination_directory\")```在上面的脚本中,`%%a` 是每次循环中的当前文件名。
`for` 命令会迭代`file` 集合中的每个文件名,并执行括号中的命令。
3. 使用通配符:你可以使用通配符来匹配文件名模式。
例如,`.txt` 会匹配所有 `.txt` 扩展名的文件。
4. 遍历目录:如果你想遍历一个目录中的所有文件,你可以使用 `.` 作为通配符。
但请注意,这也会匹配子目录。
如果你只想匹配文件而不是目录,你需要添加额外的逻辑来处理这种情况。
5. 跳过文件:你可以使用 `if not exist` 语句来跳过不存在的文件或目录。
例如:```batfor %%a in (file) do (if not exist "%%a" (echo File %%a does not exist. Skipping.continue)copy "%%a" "C:\destination_directory\")```6. 变量扩展:在批处理脚本中,变量可以在命令执行之前进行扩展。
DOS批处理命令:for循环详细说明及例子
DOS批处理命令:for循环详细说明及例子详细说明及例子:对一组文件中的每一个文件执行某个特定命令普通格式:FOR %variable IN (set) DO command [command-parameters] •%variable 指定一个单一字母可替换的参数。
•(set) 指定一个或一组文件。
可以使用通配符。
•command 指定对每个文件执行的命令。
•command-parameters 为特定命令指定参数或命令行开关。
在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。
变量名称是区分大小写的,所以 %i 不同于 %I.范例:如c:/temp/myfile.txt内容如下,共4行•;a1,a2,a3,a4,a5•b1,b2,b3,b4,b5•c1 c2 c3 c4 c5•d1,d2,d3,d4,d5例:for %i in (my*) do @echo %i 结果:myfile.txt (显示文件名)扩展格式:FOR /D %variable IN (set) DO command [command-parameters]如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配(只搜索指定目录下的目录,不再搜索指定目录下的目录的子目录,不搜索文件名)。
例:for /d %i in (*) do @echo %i 结果:是当前目录下的目录FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。
如果在 /R 后没有指定目录规范,则使用当前目录。
如果集仅为一个单点(.)字符,则枚举该目录树。
例:for /r %i in (*.txt) do @echo %i 列举当前目录下的所有txt 文件:不指定目录即为当前目录例:for /r . %i in (.) do @echo %i 列举当前目录下的所有目录,含子目录:例:for /r . %i in (5.txt) do @echo %i 列举当前目录下所有5.txt 的文件:注意“子目录”下没此文件,但依然列出来了,因为“子目录”-“电影2”下有5.txt文件例:for /r c:/tmp %i in (5.txt) do @echo %i 列举c:/tmp目录下所有的5.txt文件,但此目录及子目录下根本没有5.txt文件,结果列出来了目录结构FOR /L %variable IN (start,step,end) DO command [command-parameters]该集表示以增量形式从开始到结束的一个数字序列。
forfiles命令,在Windows删除旧文件
forfiles命令,在Windows删除旧文件在运行Windows的时候,也会出现一些不必要的文件,需要进行定期的删除,避免占用大量的磁盘空间。
Windows的forfiles命令犹如Linux的find命令,一行命令就可以删除旧文件及文件夹。
Windows的批处理文件,一般后缀为bat或者cmd,在这里使用bat。
1) forfiles常用变量在这里文件为C:\Apache\access.log。
变量内容输出结果@file 文件名(包括后缀) access.log@fname 文件名(不包括后缀) access@ext 后缀log@path 文件的完全路径C:\Apache\access.log @relpath 文件的相对路径.\access.log@isdir 如果是文件夹会返回TRUE(注意是大写),当文件时会返回FALSE。
–@fsize 文件大小(bytes单位) 128@fdate 文件的更新日期2015/12/8@ftime 文件的更新时间15:50:20 forfiles命令其他参数可以使用forfiles /?命令进行查看。
2) 批处理删除文件夹执行该bat文件的话,会删除D:\Apache\Log_Archives文件夹下面的7天之前的目录,包括目录下的文件。
cleanup.bat@echo off:: set folder pathset log_path=D:\Apache\Log_Archives:: set min age of files and folders to deleteset max_days=7:: remove sub directories from %log_path%C:\Windows\System32\forfiles -p %log_path% -d -%max_days% -c "cmd /c IF @isdir == TRUE rd /S /Q @path" 3) 批处理删除文件删除D:\Apache\Logs文件夹下的7天之前的所有文件。
2012批处理forfiles用法
2012批处理forfiles用法一、什么是forfiles命令1. forfiles命令是Windows系统中的一个批处理命令,用于筛选和处理文件,适用于命令行环境。
2. forfiles命令允许用户对指定文件执行一系列的命令,如删除、移动、复制等。
二、forfiles命令的基本语法1. forfiles [/P <Path>] [/M <SearchMask>] [/S] [/C"<Command>"] [/D <Date>] [/T <Time>]2. /P <Path>:指定要检查的起始目录路径。
3. /M <SearchMask>:指定要匹配的文件名模式。
4. /S:在子目录中执行操作。
5. /C "<Command>":指定要执行的命令。
6. /D <Date>:指定文件的日期。
7. /T <Time>:指定文件的时间。
三、forfiles命令的常用参数1. /P:指定要操作的路径。
2. /M:指定要匹配的文件名模式。
3. /S:在子目录中执行操作。
4. /C:指定要执行的命令,命令中可以使用file和path等参数。
5. /D:指定文件的日期,可以是大于、小于或指定日期。
6. /T:指定文件的时间,可以是大于、小于或指定时间。
四、forfiles命令的示例用法1. 删除指定目录下30天以前的所有文件:forfiles /p "C:\test" /s /m *.* /d -30 /c "cmd /c del path"2. 复制指定目录下所有修改日期在最近7天的文件到另一个目录: forfiles /p "C:\source" /s /m *.* /d -7 /c "cmd /c copy file C:\destination"五、forfiles命令的注意事项1. forfiles命令中的路径和文件名可以使用通配符。
foxpro copy to for fields -回复
foxpro copy to for fields -回复“FoxPro Copy To”功能是Visual FoxPro开发工具中的一个命令,用于将数据从一个表格复制到另一个表格中。
该命令可以根据特定条件复制指定的字段,为数据的处理和分析提供了便利。
本文将逐步介绍“FoxPro Copy To”功能的使用方法,并提供相关的示例代码和注意事项。
第一步:了解“FoxPro Copy To”命令的基本语法和参数在使用“FoxPro Copy To”功能之前,首先需要了解其基本语法和可用的参数。
下面是该命令的基本语法格式:COPY TO [Table File Name] [FIELDS Field List] [FOR Condition]其中,[Table File Name]指定了目标表格的文件名,[FIELDS Field List]指定了需要复制的字段列表(以逗号分隔),[FOR Condition]是可选的,用于指定复制的条件。
可以根据具体的需求设置这些参数。
第二步:创建源表格和目标表格在使用“FoxPro Copy To”功能之前,我们需要创建两个表格作为源表格和目标表格。
打开Visual FoxPro开发工具,在数据库中创建一个新的表格,并填充源数据。
然后,创建第二个表格作为目标表格。
例如,创建一个名为“SourceTable”的源表格,其中包含字段“ID”、“Name”和“Age”,创建一个名为“TargetTable”的目标表格。
第三步:编写“FoxPro Copy To”命令的代码打开Visual FoxPro开发工具的代码编辑器,输入以下代码来实现“FoxPro Copy To”命令的功能:COPY TO TargetTable FIELDS ID, Name, Age FOR Age > 18以上代码将从“SourceTable”表格中复制“ID”、“Name”和“Age”字段到“TargetTable”表格,并且只复制“Age”字段大于18的数据。
file for 用法 -回复
file for 用法-回复如何使用文件(file)。
文件(file)是计算机中存储数据的一种方式。
在计算机领域,文件是用于存储和组织数据的一种重要工具。
无论是文本文件、图像文件、音频文件还是视频文件,都可以通过文件的形式进行存储和传输。
在本文中,我们将详细讨论如何使用文件(file)的各种方法。
首先,为了使用文件(file),我们需要了解文件的基本概念和属性。
文件实际上是由一系列二进制数据组成的。
每个文件都有一个名称和一个扩展名,扩展名用于描述文件的类型。
例如,".txt"表示文本文件,".jpg"表示图像文件,".mp3"表示音频文件等等。
此外,文件还有一个重要的属性是文件的路径(path),路径用于指定文件在计算机中的具体位置。
一、创建文件在开始使用文件之前,我们首先需要创建一个文件。
创建文件的方法有很多种,下面介绍几种常用的方法。
1. 使用文本编辑器创建文本文件:可以使用常见的文本编辑器,如记事本、Sublime Text等,打开一个新的空白文件,然后保存文件并指定一个文件名和扩展名。
文件将以所选的编码格式保存。
2. 使用图像编辑软件创建图像文件:对于图像文件,我们可以使用图像编辑软件(如Adobe Photoshop、GIMP等)来创建并编辑图像文件。
在软件中选择"新建",然后设置图像的尺寸、像素密度和颜色模式等参数,最后保存图像文件,并指定一个文件名和扩展名。
3. 使用音频编辑软件创建音频文件:音频文件的创建与图像文件类似,我们可以使用音频编辑软件,如Audacity等,打开一个新的音轨,然后录制或导入音频,最后保存音频文件,并指定一个文件名和扩展名。
4. 使用视频编辑软件创建视频文件:对于视频文件,我们可以使用专业的视频编辑软件,如Adobe Premiere Pro、Final Cut Pro等,导入视频素材,进行剪辑和编辑,最后将视频导出为一个独立的视频文件,并指定一个文件名和扩展名。
Forfiles命令详解
Forfiles:/p 指定的路径/s 包括子目录/m 查找的文件名掩码/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期的7天前/c 运行的命令行表示为每个文件执行的命令。
命令字符串应该用双引号括起来。
默认命令是"cmd /c echo @file"。
下列变量可以用在命令字符串中:@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回"TRUE";如果是文件,返回"FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
示例:1. 要列出驱动器C: 上的所有批处理文件,请键入:forfiles /p c:/ /s /m*.bat /c"cmd /c echo @file is a batch file"2. 要列出驱动器C: 上的所有目录,请键入:forfiles /p c:/ /s /m*.* /c"cmd /c if @isdir==true echo @file is a directory"3. 要列出驱动器C: 上存在时间多于100 天的所有文件,请键入:forfiles /p c:/ /s /m*.* /dt-100 /c"cmd /c echo @file :date >= 100 days"4. 要列出驱动器C: 上1993 年1 月1 日以前创建的所有文件,而且对于日期早于1993 年1 月1 日的文件显示“file is quite old!”,请键入:forfiles /p c:/ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!"5. 要按列格式列出驱动器C: 上所有文件的扩展名,请键入:forfiles /p c:/ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09" With:6. 要列出驱动器C: 上的所有批处理文件,请键入:forfiles /p c:/ /s /m *.bat /c "cmd /c echo @file is a batch file"7. 要列出驱动器C: 上的所有目录,请键入:forfiles /p c:/ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"8. 要列出驱动器C: 上存在时间多于100 天的所有文件,请键入:forfiles /p c:/ /s /m *.* /d t-100 /c "cmd /c echo @file :date >= 100 days"9. 要列出驱动器C: 上1993 年1 月1 日以前创建的所有文件,而且对于日期早于1993 年1 月1 日的文件显示“file is quite old!”,请键入:forfiles /p c:/ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"10. 要按列格式列出驱动器C: 上所有文件的扩展名,请键入:forfiles /p c:/ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09"11. 删除路径i:/serverbak/2005三天前的文件forfiles /p i:/serverbak/2005 /s /m *.* /d -2 /c "cmd /c del @file"。
forfiles命令详解
forfiles命令详解⽬录复制命令:xcopy *.* d:/serverbak /s /e /v /c / d /y /hat 05:30 shutdown -s -f说明:xcopy命令参数可以⽤xcopy/?查看at 05:30 shutdown -s -f 表⽰5:30分⾃动关机forfiles命令:forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]参数列表/p Path指定Path ,表明要从哪⾥开始搜索。
默认的⽂件夹是当前⼯作⽬录,该⽬录通过键⼊句号(.) 指定。
/m SearchMask按照SearchMask 搜索⽂件。
默认的SearchMask 是*.* 。
/s指⽰forfiles 在⼦⽬录中搜索。
/c Command在每个⽂件上运⾏指定的Command 。
带有空格的命令字符串必须⽤引号括起来。
默认的Command 是"cmd /c echo @file" 。
/d [{+ | - }] [{MM / DD / YYYY | DD }]选择⽇期⼤于或等于(+ )(或者⼩于或等于(- ))指定⽇期的⽂件,其中MM / DD / YYYY 是指定的⽇期,DD 是当前⽇期减去DD 天。
如果未指定+ 或- ,则使⽤+ 。
DD 的有效范围是0 - 32768。
/?在命令提⽰符下显⽰帮助。
删除三天前的⽂件forfiles /p i:/serverbak/2005 /s /m *.* /d -2 /c "cmd /c del @file"/p 指定的路径/s 包括⼦⽬录/m 查找的⽂件名掩码/d 指定⽇期,有绝对⽇期和相对⽇期, 此处-7指当前⽇期的7天前/c 运⾏的命令⾏表⽰为每个⽂件执⾏的命令。
命令字符串应该⽤双引号括起来。
forfiles命令介绍
forfiles命令介绍首先,要说明的是,forfiles是Windows Server 2003内置的命令行文件,其它系统未必适用。
不过,win2003以上的系统,包括win7、windows server 2008均适用哦。
来看forfiles的例子。
1. 用批处理文件删除当前目录下7 天以前的扩展名为bkf文件(以当前系统时间为基准)例如:复制代码代码示例:forfiles /m *.bkf /d -7 /c "cmd /c del @file /f"2. forfiles 自动删除7天前文件(以当前系统时间为基准)示例:复制代码代码示例:forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path"d:\test换成你要的目录路径; /d -7 指删除7天以前文件。
3. 删除所有的空目录(以删除d:\test目录下为例) :复制代码代码示例:dir /ad/b/s d:\test\ |sort /r >d:\kill.txtFor /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i"del d:\kill.txt4. 先删7 天以前文件,再删所有的空目录 ;把以下复制到bat文件中。
复制代码代码示例:@echo offforfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path"dir /ad/b/s d:\test\ |sort /r >d:\kill.txtFor /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i"del d:\kill.txt5. forfiles 命令的用法及参数:forfiles /p <目标目录名> /d <天数> /c <执行的命令>/p 指定了要在哪个目录里查找文件,默认是当前工作目录。
Batch-forfiles命令详解
Batch-forfiles命令详解forfiles 命令详解C:\Users\cuixunxu>forfiles /?FORFILES [/P pathname] [/M searchmask] [/S][/C command] [/D [+ | -] {MM/dd/yyyy | dd}]Description:Selects a file (or set of files) and executes acommand on that file. This is helpful for batch jobs.Parameter List:/P pathname Indicates the path to start searching.The default folder is the current workingdirectory (.).表⽰开始搜索的路径。
默认⽂件夹是当前⼯作的⽬录 (.)/M searchmask Searches files according to a searchmask.The default searchmask is '*' .根据搜索掩码搜索⽂件。
默认搜索掩码是 '*'/S Instructs forfiles to recurse intosubdirectories. Like "DIR /S".指导 forfiles 递归到⼦⽬录。
像 "DIR /S"。
/C command Indicates the command to execute for each file.Command strings should be wrapped in doublequotes. 表⽰为每个⽂件执⾏的命令。
命令字符串应该⽤双引号括起来。
The default command is "cmd /c echo @file". 默认的command是“cmd /c echo @file”The following variables can be used in thecommand string:@file - returns the name of the file.返回⽂件名@fname - returns the file name withoutextension.返回不带扩展名的⽂件名@ext - returns only the extension of thefile.只返回⽂件的扩展@path - returns the full path of the file.返回⽂件的完整路径@relpath - returns the relative path of thefile.返回⽂件的相对路径@isdir - returns "TRUE" if a file type is 如果⽂件类型是⽬录,返回truea directory, and "FALSE" for files.如果是⽂件,返回false@fsize - returns the size of the file inbytes.以字节为单位返回⽂件⼤⼩@fdate - returns the last modified date of thefile.返回⽂件上⼀次修改的⽇期@ftime - returns the last modified time of thefile.返回⽂件上⼀次修改的时间To include special characters in the commandline, use the hexadecimal code for the characterin 0xHH format (ex. 0x09 for tab). InternalCMD.exe commands should be preceded with"cmd /c"./D date Selects files with a last modified date greaterthan or equal to (+), or less than or equal to(-), the specified date using the"MM/dd/yyyy" format; or selects files with alast modified date greater than or equal to (+)the current date plus "dd" days, or less than orequal to (-) the current date minus "dd" days. Avalid "dd" number of days can be any number inthe range of 0 - 32768."+" is taken as default sign if not specified. 指定⽇期,有绝对⽇期和相对⽇期, 此处-7指当前⽇期的7天前 /? Displays this help message.显⽰此帮助消息Examples:FORFILES /?FORFILESFORFILES /P C:\WINDOWS /S /M DNS*.*FORFILES /S /M *.txt /C "cmd /c type @file | more"FORFILES /P C:\ /S /M *.batFORFILES /D -30 /M *.exe/C "cmd /c echo @path 0x09 was changed 30 days ago"FORFILES /D 01/01/2001/C "cmd /c echo @fname is new since Jan 1st 2001"FORFILES /D +9/27/2019 /C "cmd /c echo @fname is new today" FORFILES /M *.exe /D +1FORFILES /S /M *.doc /C "cmd /c echo @fsize"FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"注意:这些命令是等价的: /S 等同于 -s, /M 等同于 -m。
使用FORFILES命令来删除SQLServer备份
虽然有很多种⽅式可以解决这个问题,但是我们可以⽤T-SQL代码来处理这个⽂件删除过程。
我⽤xp_cmdshell命令和FORFILES命令来处理类似于你所列出的过程。
可以从Microsoft TechNet中获得FORFILES的可靠信息,但是在这篇⽂章中,我将涉及FORFILES⼤量的结构和使⽤⽅法来达到你的⽬的。
该FORFILES命令将选取⽂件的⼀个⼦集并且针对这个⼦集执⾏⼀个命令。
这个命令需要下⾯的参数和接受下⾯的变量。
参数参数名描述/p 路径/m 检索屏蔽 (默认情况下是 *.*)/s 如果包含这个参数,那么⼦⽬录将会被递归地检索。
/c 针对结果集中的每⼀个⽂件执⾏命令,命令必须包含在双引号中,默认情况是"cmd c/ echo @file"/d 针对⽂件选择的⽇期范围,把最新的更改⽇期当作⽂件标准。
当/d参数是MM/DD/YYYY格式时,满⾜指定的+/-⽇期标准的⽂件也包含在内。
当⽂件格式是smallint (-32,768 - 32,768)⽂件+/-⽂件并且带着⼀个更改⽇期+/-时,从当前⽇期到该⽇期的时间数⽬将会包含在这个⽂件结果集中。
变量变量名描述@FILE ⽂件名@FNAME ⽆扩展的⽂件名@EXT ⽂件扩展名@PATH ⽂件绝对路经@RELPATH ⽂件的相对路径@ISDIR 如果⽂件类型是⼀个⽬录,那么判断是否是TRUE@FSIZE ⽂件⼤⼩(⽤字节衡量)@FDATE ⽂件上的最新更改⽇期邮戳@FTIME ⽂件上的最新更改时间邮戳 利⽤这些参数可以构造下⾯的例⼦来解决你删除备份脚本⽂件的难题。
你可以基于更改时间/⽇期或者备份类型来创建脚本。
你甚⾄可以构造能够同时参照两种标准的脚本。
我们将仔细看看这些可能的脚本。
记住,你将从T-SQL代码内部执⾏这个过程,所以你需要在⼀个xp_cmdshell访问中以EXEC xp_cmdshell 'FORFILES COMMAND'的格式总结这些语句。
删除文件夹的指令
删除文件夹的指令删除文件夹是一个常见的操作,一般情况下,我们可以通过电脑的图形用户界面来实现这个功能,也可以使用命令行的方式来删除文件夹。
命令行可以在Windows、Linux、MacOS等操作系统中使用,它是一种更加高效、快捷、精准的方法来管理系统,下面我们来详细介绍一下删除文件夹的指令。
一、删除指定文件夹在命令行中,我们可以使用RD(RmDir)命令来删除指定文件夹,这个命令常用在Windows操作系统中。
具体的指令格式如下:rd /s /q文件夹路径其中,/s表示递归删除文件夹,/q表示不进行确认操作。
具体的功能说明如下:- /s递归删除目录和其子目录。
如果要删除的目录非空,则使用这个参数。
- /q不进行确认操作,直接删除目录。
比如,我们要删除D盘下面的test文件夹,那么我们可以在命令行中输入如下命令:rd /s /q D:\test这个命令会删除D:\test文件夹以及它的所有子文件夹和文件,操作执行后没有任何提示,直接删除。
二、删除当前目录下的所有空目录要删除当前目录下的所有空目录,我们可以使用for /f命令来实现。
命令格式如下:for /f "usebackq delims=" %i in (`"dir /ad/b/s | sort/r"`) do rd "%i"其中,sort /r用于倒序排列,dir /ad/b/s用于列出所有空目录的路径,rd用于删除目录。
这个命令可以批量删除当前目录下的所有空目录,不过需要注意的是,如果目录中含有非空目录或文件,这些目录或文件将不会被删除。
三、删除指定日期之前的文件夹如果我们想要删除指定日期之前的文件夹,可以使用forfiles命令来实现。
forfiles命令可以查找指定日期之前的文件,并将它们传递给其他命令进行处理。
命令格式如下:forfiles /p "文件夹路径" /d -30 /c "cmd /c if@isdir==TRUE rd /s /q @path"其中,/p表示设置要搜索的文件夹路径,/d表示设置要搜索的日期,这里是30天以前,/c表示要执行的命令。
file for 用法
在C语言中,file for是一个非常常见的语法结构,用于打开指定的文件,执行一些操作,然后将其关闭。
具体用法如下:
1. 定义文件指针和字符变量。
```c
FILE *fp; //定义文件指针
char c; //定义字符变量
```
2. 打开文件。
```c
fp = fopen("test.txt", "r"); //以只读方式打开文件test.txt ```
3. 执行操作。
这里是一个示例,通过循环逐个读取文件中的字符并打印出来。
```c
while((c = fgetc(fp)) != EOF) { //从文件中读取一个字符,直
到文件结束
printf("%c", c); //打印字符
}
```
4. 关闭文件。
```c
fclose(fp); //关闭文件
```
需要注意的是,在使用file for语法结构时,需要保证打开的文件在操作完成后被正确关闭,以避免资源泄漏或其他问题。
同时,在进行文件操作时,也需要注意文件路径和权限等问题,以确保程序的正确性和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
@isdir - 如果檔案類型是目錄的話,
傳回 "TRUE",如果是檔案
的話,傳回 "FALSE"。
@ext - 只傳回檔案的
附檔名。
@path - 傳回檔案的完整路徑。
@relpath - 傳回檔案的相對
forfiles /p c:\ /c "cmd /c if @isdir==FALSE echo @FILE"
請注意上面的 "FALSE" 要大寫!
再來看看微軟的官方說明: Forfiles
以下列出該指令的參數說明: (利用 forfiles /? 取得)
FORFILES [/P pathname] [/M searchmask] [/S]
@ftime - 傳回檔案上次修改
的時間。
要在命令列中包含特殊字元的話,
請使用 0xHH 格式的十六
[/C command] [/D [+ | -] {yyyy/MM/dd | dd}]
描述:
選取一個檔案 (或一組檔案),並在檔案上
執行命令。這對批次工作很有幫助。
參數清單:
/P pathname 表示要開始搜尋的路徑。
預設資料夾是目前的
下列變數可以使用於命令字串:
@file - 傳回檔案的名稱。
@fname - 只傳回檔案的名稱,
不傳附檔名。
進位字元碼 (例如 0x09 代表 tab)。
內部的 CMD.exe 命令應該
以 "cmd /c" 執行。
/D date 選取檔案上次修改的時間大於、
如果未指定,"+" 將被視為預設符號。
/? 顯示這個說明訊息。
目前的日期再加上"dd" 天、
小於或等於 (-) 目前的日期減去 "dd" 天。
有效的 "dd" 可以是介於
0 - 32768 之間的數字。
@fsize - 傳回檔案的大小,
單位是位元組。
@fdate - 傳回檔案上次修改的
日期。
等於 (+) 或小於或等於 (-)、
使用 "yyyy/MM/dd" 格式表示指定的日期;
或選取檔案日期上次修改
的時間大於或等於 (+)
子目錄。例如 "DIR /S"。
/C command 表示每個檔案要執行的命令。
命令字串應該包含在雙括號
之間。
預設的命令是 "cmd /c echo @file"。
目錄 (.)。
/M searchmask 根據 searchmask 搜尋檔案。
預設的 searchmask 是 '*'。
/S 指示 forfiles 遞迴搜尋
forfiles指令介紹
一般最常用的是刪除 log 檔案, 指定目錄, 並指令時間 (例如保留一週, 一週前的刪除), 就可以利用這個指令進行刪除:
forfiles /p c:\temp /s /m *.log /d -7 /c "cmd /c del @FILE"
或是列舉出指定目錄下的檔案(非目錄)的名稱列出: