Windows shell 编程 ¬¬——将指定文件夹中的所有文件名输出到一个文件中

  问题分析:该任务主要有三个问题要解决1)如何存放指定的文件夹,2)如何遍历文件夹下的所有文件;3)如何将遍历的文件输出到文件中。下面就逐一来解决这些问题。
问题解决:
1. 如何存放指定的文件夹
在Shell中主要通过set 来存放环境变量。比如:Set var=xxxx。如果要删除该变量,则使用Set var=。在shell脚本中并没有类似数组这样的变量来帮助你存放数据。所以只能考虑将几个文件名放到一个string中,然后通过字符串识别来分别读出这些变量。示例如下:
SET DirList=C:/A C:/B C:/D
FOR /D %%i IN (%DirList%) DO ECHO %%i     (如直接在命令行输入,%%i应写为%i)
利用FOR语句就可以分别读出C:/A,C:/B和C:/D。此处也算是对FOR /D命令的一种灵活运用了。当然除此之外,也可以将变量存放于某文件,然后再循环读出,此处就不再详细说明了。
上面的语句还有些不完善的地方,那就是不支持文件名中出现空格的情况。比如C:/D E, 这种情况,命令只能识别出空格前的部分,造成文件名错误。避免这种情况的方法就是用引号把文件名包起来,如下所示:
SET DirList=”C:/A” “C:/B” “C:/D E”
 
2. 如何遍历文件夹中的所有文件呢?
解决了多个文件夹名存放的问题,现在需要遍历文件夹了。幸运的是shell为我们提供了一个命令可以方便的遍历完文件夹中的文件。命令如下:
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
于是很自然的想到了如下的语句:
SET  DirList = ”C: A” “C: B” “C: D E”
       
FOR   / D %%m IN  ( %DirList% )   DO   (
           
FOR   / R %%m %%i IN  ( * )   DO   ECHO  %%i
       
)
但不幸的是,这个脚本运行时出错。主要问题就是在第二个FOR语句中并不支持%%m, 在path位置上出现%%m让FOR有点不知所措。于是我们想到是否可以先把%%m赋值给一个变量,然后再将变量用于FOR语句。修改后结果如下:
SET  DirList = ”C:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值