欢迎光临散文网 会员登陆 & 注册

关于上期.bat文件(批处理)的扩展分享

2023-07-21 15:08 作者:AcePlay  | 我要投稿

前言

       上期分享:用.bat文件(批处理)输出目录下文件名至Excel文件,本期详细分享脚本的具体内容。


脚本构成和作用

       脚本主要由四块构成,具体如下(底部附微软官方文档链接):

(1)dir命令

       dir命令主要用于获取指定目录下文件和文件夹的信息,脚本中对应的是dir %cd%/b,其中%cd%是一个系统变量,储存当前脚本所在路径;/b是dir命令中的一个可选参数,作用是限定dir命令输出的结果只包含文件名和后缀的形式,例如test.xlsx。

      整块命令的作用就在于仅提取文件名和后缀,不包含文件夹和其他摘要信息;如果有进一步需求的,dir命令可以一同输出子文件夹中的信息,详见官方文档。

(2)for命令

      for命令等价于于编程语言中的for循环语句,脚本中对应的是for %%i in (*) do @echo %%~ni,其中for [元素] in ([元素集合]) do [执行动作],这是固定格式。

      [元素]就是%%i,这是参数写法,也可以写成%%j、%%k等。

      [元素集合]就是*,代表的是dir命令中的输出结果,一般是for命令和管道符"|"搭配时使用,管道符在后续说明。

      [执行动作]就是@echo %%~ni,@echo是一个输出动作,%%~ni是前面%%i的一种固定格式写法,代表%%i数据中纯文件名。

      整块命令作用是将dir命令的输出结果(文件名+后缀)通过for命令逐一提取并输出(纯文件名)。

(3)find命令

     find命令的作用匹配对应的文本,还可以起到过滤的作用,脚本中对应的是|find /v "test"|find /v "GetFileName"

     /v是find命令的一个可选参数,匹配时不包含后面对应字符串。

     "test"和"GetFileName"是需要匹配的字符串,和上面的/v配合形成过滤效果。

     整块命令作用是将前面dir和for命令输出的结果进行过滤,剔除"test"和"GetFileName"的文件名,因为这2个是脚本文件和输出文件的文件名,不在我们需要统计的范畴内,所以这2个文件名字自定义之后,也要在脚本这里相应的地方更新。

(4)管道符"|"和重定向符">>"

     管道符"|"连接前面的dir、for和2段find命令,其作用是将符号左边的结果传给右边处理。

     重定向符">>"作用是将左边的结果输出至指定目录下的文件中,若这个文件不存在,脚本将自动创建,若存在,就会在文件尾部添加数据。脚本中>>test.xlsx,没有写明路径,代表直接按脚本当前路径使用。

     综上所述,整个脚本的原理:dir命令仅获取文件名+后缀名信息>>for命令逐个提取纯文件名>>find命令剔除"test"和"GetFileName"的文件名>>重定向输出至指定文件中。以下附微软官方文档地址:

     dir:https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc755121(v=ws.11)

     for:https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc754900(v=ws.11)

    find:https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc725655(v=ws.11)


脚本的自定义

       通过改写脚本,可以实现自定义目标目录和输出目录,以及输出文件名和文件类型,例如以下改写:

       每次运行.bat文件前要提前打开文件, 将信息写入参数:input(目标路径),output(输出路径),filename(输出文件名),fileformat(输出文件格式)。输出文件格式可以是txt、docx(doc)、xlsx(xls)等储存文本信息的类型。


总结

      编写.bat文件(批处理),还可以实现其他更多方便的功能,有待进一步学习和积累!

关于上期.bat文件(批处理)的扩展分享的评论 (共 条)

分享到微博请遵守国家法律