批处理如何遍历并删除指定MD5值的文件?

·     请完全了解文件/文件夹作用后再执行各种文件/文件夹操作,以免误删重要文件/文件夹。

·     文件/文件夹分为隐藏、非隐藏两类。对于隐藏文件/文件夹,请勿修改或删除,以免影响对应功能。

·     给文件/文件夹命名时,首字母不能使用“.”。否则,系统将把名称首字母为“.”的文件/文件夹识别为隐藏文件/文件夹。

当需要对存储介质进行写操作,包括执行copydeletefixdiskformatgunzipgzipmkdirmoverenamermdirundelete命令,请确保没有将存储介质写保护。如果存储介质写保护了,这些命令将执行失败。执行其它命令行不受写保护开关影响。

当用户对存储介质或文件系统执行fixdiskformat操作时,其他用户不能访问该存储介质或文件系统。需要等待这些操作结束后,通过以下方式来访问此存储介质或文件系统:

本命令手册中文件系统名称、目录名和文件名的参数输入规则必须符合文件系统命名规范,详细请参见“基础配置指导”中的“文件系统管理”。

cd命令用来修改工作路径。

directory:指定目标工作路径。

..:返回上一级目录。如果当前的工作路径是根目录,则执行cd ..后提示出错。该参数不支持命令行在线帮助。

# 登录设备后从根目录进入test文件夹。

copy命令用来复制文件。

source-file:为源文件名或者远程源文件URL。若为URL格式,表示从远程文件服务器拷贝文件。远程源文件URL是否支持大小写遵循远程服务器端的规格。

dest-file:为目标文件名或远程目标文件URL。若为URL格式,表示拷贝文件至远程的目标文件。远程目标文件URL是否支持大小写遵循远程服务器端规格。

dest-directory:为目标文件夹或远程目录URL。若为URL格式,表示拷贝文件至远程的目标文件夹。远程目录URL是否支持大小写遵循远程服务器端规格。如果使用文件夹作为dest-directory,则系统会将文件复制到文件夹,使用源文件名称作为文件名。

source interface interface-type interface-number:指定连接远程服务器时使用的源接口。指定源接口后,设备将使用源接口的主IP作为设备生成的连接报文的源IP。不指定该参数时,则使用路由出接口作为源接口。

当进行远程拷贝时,支持使用FTP、TFTP和HTTP协议,各协议的URL格式如所示:

如果服务器只对用户名进行认证,则无需输入密码

tftp://服务器地址[:端口号]/文件路径

如果服务器只对用户名进行认证,则无需输入密码。

delete命令用来删除文件。

/unreserved:彻底删除该文件,如果不指定该参数,被删除的文件将被移至回收站中。

file:要删除的文件名。file参数支持通配符“*”进行匹配,例如delete *.txt可以删除当前目录下所有以txt为扩展名的文件。

delete /unreserved file命令用来永久删除文件,系统会将该文件从设备上彻底删除。被删除的文件不再存在,不能恢复。

delete file命令用来暂时删除文件,被删除的文件存放在回收站中,可以使用undelete命令恢复:

当文件系统空间不足时,执行delete /unreserved file命令,系统将永久删除对应文件。

请不要对回收站中的文件执行delete命令,以免影响回收站功能。若要删除回收站中的文件,请使用reset recycle-bin命令。

在同一个目录下,如果先后删除了两个名称相同的文件,回收站中只保留最后一次删除的文件。不同目录下,如果先后删除了名称相同的文件,回收站中会保留这些删除的文件。

# 删除当前目录下的文件1.cfg。

# 永久删除当前目录下的文件1.cfg。

dir命令用来显示当前文件夹或文件信息。

/all:显示当前文件夹下所有的文件及文件夹信息,包括非隐藏文件、非隐藏文件夹、隐藏文件和隐藏文件夹。不指定该参数时,只显示非隐藏文件和非隐藏文件夹。

file:显示指定的文件的信息。file参数支持通配符“*”,例如dir *.txt可以显示当前文件夹下所有以txt为扩展名的文件。

directory:显示指定的文件夹的信息。

/all-filesystems:显示设备上所有文件系统根目录下的文件及文件夹信息。

不使用任何参数时,用来显示当前文件夹下所有可见文件及文件夹的信息。

回收站的文件夹名称为“.trash”,如需查看回收站内的文件,请用dir /all .trash,或者cd .trash进入回收站文件夹后,再用dir命令查看。

多用户同时执行文件操作时,比如同时创建或删除文件或文件夹,可能导致该命令显示结果不准确。

# 显示当前文件夹下所有的文件及文件夹信息。

# 显示设备上所有文件系统根目录下的文件及文件夹信息。

表1-2 dir命令显示信息描述表

·     -rwh表示属性。第一个字符如果是d表示文件夹,如果显示为“-”,则表示它是文件;第二个字符是r,表示本文件或文件夹是可读的;第三个字符是w,表示本文件或文件夹是可写的;第四个字符如果是h,表示本文件或文件夹是隐藏的,如果显示为“-”,则表示它是非隐藏的(请不要修改或删除隐藏文件或文件夹,以免影响对应功能)

execute命令用来执行批处理操作。

filename:批处理文件名,对文件名后缀无限制。

批处理文件是可执行命令的集合,批处理功能用于自动执行批处理文件里的命令,执行过程相当于手工逐条执行批处理文件里的命令。

执行批处理操作之前,首先需要在PC上编辑批处理文件,然后将批处理文件下载到设备上。对于批处理文件中的命令行,建议您先在设备上逐条进行手动配置,确认命令行形式正确、能成功执行后,再保存到批处理文件中。请注意:

·     请用户自行保证批处理文件中的命令行是设备可执行的合法命令行。如果批处理文件中的某条命令非法或者执行条件不成熟,则该命令将执行失败,系统会跳过该命令接着执行下一条命令。

# 执行根目录下的test.bat批处理文件。

file prompt命令用来设置系统对文件/文件夹操作的提示方式。

用户对文件进行有危险性的操作时,系统会要求用户进行交互确认。

alert:当用户对文件/文件夹进行有危险性的操作时,系统会要求用户进行交互确认。

quiet:用户对文件/文件夹进行任何操作,系统均不要求用户进行确认。

如果将文件/文件夹操作的提示方式设置为quiet,则系统对文件/文件夹操作不要求用户进行确认,这样可能会导致一些因误操作而发生的、不可恢复的、对系统造成破坏的操作产生。

# 设置用户对文件进行有危险性的操作时,要求进行交互确认。

fixdisk命令用来恢复文件系统的空间。

filesystem:文件系统的名称。该参数的具体取值与设备型号有关,请以设备的实际情况为准。

由于异常操作等原因,文件系统的某些空间可能不可用,或者某些空间已经不再需要使用但是没有释放,用户可以通过fixdisk命令来恢复文件系统的空间。

用户对文件系统执行fixdisk操作时,如果同时还有其他用户在访问该文件系统,系统会提示fixdisk操作失败。

# 恢复文件系统Flash的空间。

format命令用来格式化文件系统。

filesystem:文件系统的名称。该参数的具体取值与设备型号有关,请以设备的实际情况为准。

对于可插拔存储介质,设备仅支持VFAT类型的文件系统,如果不是VFAT类型的文件系统,需要先格式化成VFAT类型才能读写。

格式化操作将导致文件系统中的所有文件丢失,并且不可恢复;尤其需要注意的是,如果文件系统中有启动配置文件,格式化该文件系统,将丢失启动配置文件。

用户对文件系统执行格式化操作时,如果同时还有其他用户在访问该文件系统,系统会提示格式化操作失败。

如果待格式化的文件系统中存有安全日志文件,则不能进行格式化操作,请根据实际需要,将安全日志从文件系统里移出或删除。安全日志需要安全日志管理员对其进行操作,有关安全日志管理员的详细介绍请参见“基础配置指导”中的“RBAC”。

gunzip命令用来解压缩文件。

file:需要被解压缩的文件名,以.gz为后缀。

该命令将解压缩并替换当前指定文件。

gzip命令用来压缩文件。

file:需要被压缩的文件名。

执行本命令后,原文件将被压缩并命名为file.gz,并删除原文件。

md5sum命令用来使用MD5摘要算法计算文件的摘要值。

使用摘要算法对文件计算摘要值,通常用于验证文件的正确性和完整性。

mkdir命令用来创建文件夹。

如果创建的文件夹与指定文件夹下的文件或者其它文件夹重名,则创建操作失败。

在使用该命令创建文件夹之前,指定的文件夹必须已经存在。例如:创建文件夹flash:/test/mytest,这时,test文件夹必须已经存在,否则,创建失败。

# 在当前路径创建文件夹test。

more命令用来显示文本文件的内容。

move命令用来移动文件。

如果指定dest-directory,则系统会将文件移到指定文件夹,文件名保持不变。

pwd命令用来显示当前工作路径。

rename命令用来重命名文件或文件夹。

若目标文件名或目标文件夹与当前路径下已经存在的文件或目标文件夹重名(不区分大小写,只要字母相同就认为同名),则该操作不执行。

/force:表示直接清空回收站,不需要用户对清空操作进行确认。如果不指定该参数,执行回收站清除操作时,系统将对每一个即将清除的文件进行确认。

delete file命令删除文件是将文件放在回收站中,但仍然占用存储空间,如果想要把回收站中的该文件删除,必须执行reset recycle-bin命令。

# 回收站中有文件a.cfg和b.cfg,清空回收站。

rmdir命令用来删除文件夹。

在删除文件夹前,必须先永久删除或者暂时删除文件夹中的所有文件和子文件夹。如果文件只是暂时删除,那么执行rmdir会导致这些文件从回收站中彻底删除。

sha256sum命令用来使用SHA-256摘要算法计算文件的摘要值。

使用摘要算法对文件计算摘要值,通常用于验证文件的正确性和完整性。

tar create命令用来将多个文件/文件夹打包成一个新文件。

gz:表示打包后,再使用gzip格式压缩该打包文件。不指定该参数时,表示只打包,不压缩。

verbose:表示在打包过程中逐个显示已经打包的文件和文件夹的名称。不指定该参数时,则不会显示。

}&<1-5>:表示需要打包的原文件/文件夹列表。当包括文件夹时,则表示打包该文件夹下的所有文件和子文件夹。&<1-5>表示前面的参数最多可以输入5次。

执行该命令后,设备会先拷贝原文件/文件夹,再将它们打包成一个新文件后保存。

# 将文件1.cfg、2.cfg和文件夹test打包压缩后保存到新文件c.tar.gz,并在打包过程中逐个显示已经打包的文件和文件夹的名称。

verbose:在命令行执行过程中,显示file中包含的所有文件/文件夹的名称。

screen:不解包,仅将file中包含的原文件的内容输出至登录终端。

to directory:解包至目标路径。directory表示解包后文件的保存路径。

不指定screento directory参数时,目标路径为用户的当前路径。

执行该命令后,设备会将file中包含的文件/文件夹解包后保存到目标路径,名称保持不变。保存时会自动覆盖目标路径中已存在的同名文件/文件夹。

# 将a.tar解包,并在解包过程中,显示a.tar中包含的所有文件/文件夹的名称。

# 将a.tar中包含的原文件的内容直接输出到登录终端。

执行以上操作会不解包,直接显示文件内容,剩余的文件内容此处省略。

tar list命令用来显示打包文件中包含的文件/文件夹的名称。

# 显示a.tar中包含的文件/文件夹的名称。

undelete命令用来恢复未被彻底删除(即存放在回收站里)的文件。

file:要恢复的文件名。

如果恢复的文件名与当前存在的文件重名,系统将提示操作者是否覆盖原有文件。如果输入<Y>,则覆盖源文件;如果输入<N>,则不再执行恢复操作。

之所以要区分cmd窗口和批处理文件两种环境,是因为在这两种环境下,命令语句表现出来的行为虽然基本一样,但是在细节上还是稍有不同,最明显的一个差异就是:在cmd窗口中,for之后的形式变量I必须使用单百分号引用,即%I;而在批处理文件中,引用形式变量I必须使用双百分号,即%%I。为了方便起见,若不是特别强调,以下的讲解都以批处理文件环境为例。
我们先来看一下for语句的基本要素都有些什么:

  1. for、in和do是for语句的关键字,它们三个缺一不可;
  2. %%I是for语句中对形式变量的引用,即使变量l在do后的语句中没有参与语句的执行,也是必须出现的;
  3. in之后,do之前的括号不能省略;
  4. command1表示字符串或变量,command2表示字符串、变量或命令语句;


对批处理文件的for循环就是这样简单,下面来看看for语句的注意事项,并运行更复杂的for循环实例。

  • for语句的形式变量I,可以换成26个字母中的任意一个,这些字母会区分大小写,也就是说,%%I和%%i会被认为不是同一个变量;形式变量I还可以换成其他的字符,但是,为了不与批处理中的%0~%9这10个形式变量发生冲突,请不要随意把%%I替换为%%0~%%9中的任意一个;

  • in和do之间的command1表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔;

  • for语句依次提取command1中的每一个元素,把它的值赋予形式变量I,带到do后的command2中参与命令的执行;并且每次只提取一个元素,然后执行一次do后的命令语句,而无论这个元素是否被带到command2中参与了command2的运行;当执行完一次do后的语句之后,再提取command1中的下一个元素,再执行一次command2,如此循环,直到command1中的所有元素都已经被提取完毕,该for语句才宣告执行结束。

有了以上的基础,我们再来看下面这个例子,这个例子修改了demo1中的部分内容(记为demo2),结果将大不一样:


如果把 这个字符串中的点号换为空格、跳格或等号,执行结果将和demo2的执行结果别无二致。

现在,来分析一下demo2代码中for语句的执行过程:

  • for语句以逗号为分隔符,把 A,B,C 这个字符串切分成三个元素:A、B和C,由此决定了do后的语句将会被执行3次;

  • 第一次执行过程是这样的:先把 bbs 这个字符串作为形式变量I的值,带入do后的语句中加以执行,也就是执行 echo %%I 语句,此时的I值为A,因此,第一次执行的结果,将会在屏幕上显示A这个字符串;第二次执行和第一次执行的过程是一样的,只不过此时I的值已经被替换为command1中的第二个元素了,也就是 B 这个字符串;如此循环,当第三次echo执行完毕之后,整条for语句才算执行完毕,此时,将执行下一条语句,也就是pause命令。

对一组文件中的每一个文件执行某个特定命令。 %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 为特定命令指定参数或命令行开关。 在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I. 如果启用命令扩展,则会支持下列 FOR 命令的其他格式: 如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。 检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。 如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符, 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列 fileset 为一个或多个文件名。继续到 fileset 中的下一个文件之前, 每份文件都被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字, 然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。 以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。 你可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个 或多个指定不同解析选项的关键字。这些关键字为: eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和制表符的 的 for 本身。这会导致额外变量名称的分配。m-n 格式为一个范围。通过 nth 符号指定 mth。如果 符号字符串中的最后一个字符星号, 那么额外的变量将在最后一个符号解析之后 分配并接受行的保留文本。 usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单 引号字符为文字字符串命令并允许在 file-set 中使用双引号扩起文件名称。 会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将 每行中的第二个和第三个符号传递给 for 函数体,用逗号和/或 空格分隔符号。请注意,此 for 函数体的语句引用 %i 来 获得第二个符号,引用 %j 来获得第三个符号,引用 %k 来获得第三个符号后的所有剩余符号。对于带有空格的文件 名,你需要用双引号将文件名括起来。为了用这种方式来使 用双引号,还需要使用 usebackq 选项,否则,双引号会 被理解成是用作定义某个要分析的字符串的。 指定最多 26 个符号,只要不试图声明一个高于字母 "z""Z" 的变量。请记住,FOR 变量是单一字母、分大小写和全局的变量; 而且,不能同时使用超过 52 个。 还可以在相邻字符串上使用 FOR /F 分析逻辑,方法是, 用单引号将括号之间的 file-set 括起来。这样,该字符 串会被当作一个文件中的一个单一输入行进行解析。 最后,可以用 FOR /F 命令来分析命令的输出。方法是,将 括号之间的 file-set 变成一个反括字符串。该字符串会 被当作命令行,传递到一个子 CMD.EXE,其输出会被捕获到 内存中,并被当作文件分析。如以下例子所示: 会枚举当前环境中的环境变量名称。 另外,FOR 变量参照的替换已被增强。你现在可以使用下列 %~fI - 将 %I 扩展到一个完全合格的路径名 %~xI - 仅将 %I 扩展到一个文件扩展名 %~sI - 扩展的路径只含有短名 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩展到 可以组合修饰符来得到多重结果: %~dpI - 仅将 %I 扩展到一个驱动器号和路径 %~nxI - 仅将 %I 扩展到一个文件名和扩展名 %~fsI - 仅将 %I 扩展到一个带有短名的完整路径名 到找到的第一个驱动器号和路径。 在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆。 echo 成功,请按任意键退出!

搜索当前目录下有哪些文件?

搜索当前目录下所有的文本文件?

只要当前目录名不要路径(类似字符截取)


读取文件内容使之成为一个变量

这样后面的命令就直接可以调用变量commitid

批量创建空文件(类似创建索引)

调用C:\Temp\wenjian.txt内的文件名,每行一个文件名,批量创建以MP4为扩展名的空文件,并且是为索引。

有什么用呢?例如我在我的电脑中存了好多电影,突然有一天磁盘满了,我就把大部分电影移动到了U盘中。接着我继续下载电影,但是我不知道哪些电影我已经有了。因为有一部分在U盘里,我不可能每次都插U盘去确认,于是我就想在电脑磁盘中建立U盘中电影的索引,这里的索引其实就是以MP4结尾的空文件。这样我只要用Everything搜索,有这个索引我就不下载了。以免重复。我暂且是这么干的,不知道大家有没有更好的办法。

demo.txt为你要批量创建目录的文件名,每行一个目录名


我要回帖

更多关于 同一个文件md5每次不一样 的文章

 

随机推荐