批处理的重点,for循环的使用

   for循环有六种用法,乍一看很复杂,其实没那么复杂。个人建议直接使用4 5 6 ,因为多了个这个"usebackq",意思就是说,可以处理 文件名的全路径或者命令语句的返回结果中有空格或& 的文件。比如这种文件 D:\Program Files\a.txt,处理这种路径带空格的文件,下面的1 2 3 是无能为力的。   下面对上面六种格式,做举例说明:  for循环详细用法,请参考此文《批处理for语句从入门到精通》。    
  
  1、for /f %%i in (文件名) do (……) 
    2、for /f %%i in ('命令语句') do (……)
   3、for /f %%i in ("字符串") do (……)
  4、for /f "usebackq" %%i in ("文件名") do (……)
  5、for /f "usebackq" %%i in (`命令语句`) do (……)
  6、for /f "usebackq" %%i in ('字符串') do (……)

 其中,4、5、6由1、2、3发展而来,他们有这样的对应关系:1-->4、2-->5、3-->6。

好在后3种情形并不常用【 编注:其实这三种情况经常会碰到,windows的文件路径通常带空格的比较多】,所以,牢牢掌握好前三种句型【 编注:最好记住后三种,因为我经常用到的都是后3种】的适用情形就可以了,否则,要在这么多句型中确定选择哪一条语句来使用,还真有点让人头脑发懵。

至于 for /f 为什么要增加usebacq参数,我只为第4条语句找到了合理的解释:为了兼容文件名中所带的空格或&。它在第5、6条语句中为什么还有存在的必要,我也不是很明白,这有待于各位去慢慢发现【编注:第五条的其实也有存在的必要,详细见下面<3.5>的解释】。

<3.5> 解释说明:请你在命令提示符下面运行dir /a-d /b /s *.exe ,其作用是打印出该文件夹下面所有的exe文件,包括子目录里面的。下面的test目录是我自己创建的。

      D:\Program Files\腾讯游戏>dir /a-d /b /s *.exe
      D:\Program Files\腾讯游戏\test\abc.exe
      D:\Program Files\腾讯游戏\test\aaa.exe
      D:\Program Files\腾讯游戏\CFSelWorld.exe
      D:\Program Files\腾讯游戏\crossfire.exe
      D:\Program Files\腾讯游戏\limingliming.exe

由上面的命令执行结果,可以看出,第5条语句里面的"usebackq"完全有存在的必要。微软搞出这么个东西来,自然也有它的用处的。举个例子c.bat内容如下:

    cd /d "D:\Program Files\腾讯游戏"
    for /f "usebackq delims=" %%i in (`dir /a-d /b /s *.exe`) do cacls "%%i" /e /c /d everyone 
c.bat目的就是,对"D:\Program Files\腾讯游戏"目录下,所有的游戏exe文件拒绝任意用户访问,不可执行,不可删除。每条命令含义如下:
cd /d                                           : 使用 /D 开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。这样可以直接到D:盘。
cacls "%%i" /e /c /d everyone: cacls命令是windows处理文件权限用的。具体可查看帮助命令 cacls /? 。/d everyone表示拒绝任何用户访问。
"usebackq delims="               : usebackq的意思前面讲过了,这里说下delims=,注意等号后面什么都没有,表示for循环切分的时候按照行为单位。如果等号后面有东西,比如delims=\ 请看下面3个例子:

(1) for /f "usebackq delims=" %%i in ("d:\a.txt") do echo "%%i"   注:对a.txt按照每行进行切割,然后循环打印
       "abc\def\xyz"
       "xxxxxx"
       "yyyyy"
       "123\456\ddd"
(2) for /f "usebackq delims=\" %%i in ("d:\a.txt") do echo "%%i"   注:对a.txt按照在反斜杠'\'处进行切割,切割出来的结果只取第一个反斜杠的前面的内容,如果某行一个反斜杠则全打印出来。
        "abc"
        "xxxxxx"
        "yyyyy"
        "123"
(3) for /f "usebackq tokens=2, delims=\" %%i in ("d:\a.txt") do echo "%%i"   注: 如果想取某个地方的,比如想截取def,请使用tokens,详细用法见网页链接《 for循环详细用法,请参考此文章。》
 其中a.txt有如下内容:
            abc\def\xyz
            xxxxxx
            yyyyy
            123\456\ddd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值