[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] 对“批处理for语句从入门到精通”的找茬行动

我记得第一次看到这篇“批处理for语句从入门到精通”的时候,有一种“拨云雾而见天日”的感觉,以前也不是没有学过for,但是总不得要领。

在这里真诚感谢namejm大大花心力写了这么篇好贴。

随着不断在bathome学习、讨论、回答问题,能力也是与日俱增,再回首看这篇“批处理for语句从入门到精通”,除了感叹于namejm在写作上功力不俗外,也发现了不少错漏之处(这点是在所难免的,for命令是批处理的灵魂所在、内容之丰富到了“令人发指”的程度,想要以一人之力写一篇深入浅出、面面俱到的入门教程无疑是一件近似于不可能完成的任务)。

近日学了一句话“只要眼球足够多,虫子再多也不怕”,这是开源界的一句俏皮话,通俗一点来说就是“只要找茬的人多了,错误也就少了”,这话用在这篇教程中也是适用的,所以鉴于这点,写了以上这些文字。

本想发在版主区的,但是写着写着便想到,与其借助bz的力量,不如借助众批友的力量,群众的力量是强大的,人民的力量是毁灭性的。

批处理for语句从入门到精通:http://bbs.bathome.net/thread-2189-1-1.html


找茬回帖规范:
1.账号
2.错误之处/遗漏之处
3.改正/补漏
4.详述“改正/补漏”的理由。

例如:
1.hello123world
2.错误之处:3楼,以上代码不能列出含有隐藏或系统属性的文件;
3.改正:以上代码不能列出含有隐藏属性的文件
4.理由:
  1. @echo off
  2. attrib +s 1.txt
  3. For  %%i in (*.txt) do Echo %%i
  4. pause
复制代码
这里的1.txt在结果中显示出来了。

本帖最后由 aries215 于 2020-6-14 17:50 编辑

2.错误之处:“仅仅为了匹配第一层目录而存在:for /d” 整节内容,不知 for /d /r 可以枚举目录,说乏善可陈,多次抒情表达遗憾。
3.改正:重写。
4.详述理由:经测试,for /d /r 能枚举目录:
  1. for /d /r %%i in (*) do echo %%i
复制代码

TOP

谢谢你们的分享  ~~~~~~

TOP

也没找出多少茬,O(∩_∩)O~

TOP

感谢分享!
Live long and prosper

TOP

本帖最后由 只是时间问题 于 2015-6-17 16:13 编辑

for /f  读取 text 内容  以行为单位  行中出现空格 则当前行空格后面的内容读取不到
例如: test.txt
论坛的目标 是:不求最大,但求最好,做最实用的批处理论坛。
论坛地 址:bbs.bathome.net。
这里 是:新手晋级的福地,高手论剑的天堂。
@echo off
for /f %%i in (test.txt) do echo %%i
pause
输出结果为
论坛的目标
论坛地
这里


其实我想知道如何排除空格读取全部信息,不然出现空格读取不完全 或者截断不完全 有何意义?

TOP

回复 23# zh_1452


    关于attrib命令的使用请查询本版块教程资料,或者直接查询attrib/?
  1. C:\Users\Administrator>attrib/?
  2. 显示或更改文件属性。
  3. ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
  4.        [drive:][path][filename] [/S [/D] [/L]]
  5.   + 设置属性。
  6.   - 清除属性。
  7.   R 只读文件属性。
  8.   A 存档文件属性。
  9.   S 系统文件属性。
  10.   H 隐藏文件属性。
  11.   I 无内容索引文件属性。
  12.   [drive:][path][filename]
  13.       指定 attrib 要处理的文件。
  14.   /S 处理当前文件夹及其所有子文件夹中的匹配文件。
  15.   /D 也处理文件夹。
  16.   /L 处理符号链接和符号链接目标的属性。
复制代码

学批处理要有两个思想:
一是找正确的资料学习,不要乱写、瞎蒙。
二是写代码运行测试,不要想当然,写出来了以为就可以运行了,可以实现目的了。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

@echo off start attrib c: d: e: f:
attrib c: d: e: f: *.ini
for %%I in (*.ini) do attrib %%I
echo on
pause

TOP

回复 21# 戴娜拉


    可能你刚好打开显示系统隐藏文件功能了^
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

我用for /r 命令为什么可以查到隐藏文件夹呢

TOP

看都看不怎么懂,哪来找茬,嘎嘎

TOP

本帖最后由 CrLf 于 2012-6-16 01:10 编辑

回复 7# qzwqzw


  来个淫荡解:
  1. for /f eol^= %%a in (";test") do echo %%a
复制代码
见此贴第五部分:http://bbs.bathome.net/viewthread.php?tid=15748
1

评分人数

    • qzwqzw: 多谢提醒!PB + 8 技术 + 1

TOP

回复 17# cjiabing
没想到
我那天的“梦话”都会有人回复
你所说的几点很有条理
我总体上是同意的

只是cmd的语句分析自有其复杂之处
他的词法分析和解析调用动作不会完全依照那个流程
这主要包括对嵌套的()的处理
对& | && || 的处理
天的白色影子

TOP

回复 15# qzwqzw


    第一、获得全局设置,比如变量延迟、@echo off等。
    第一、界定行。一个命令一行。区别如FOR、IF、()等可以跨行的,以及标签等。获得和界定“行”应该是最基本的。
    第三、处理行。如你说的,将一行命令分解为几个命令,像&、|等。因为区分不同的命令才能执行不同的命令,这是必须的。在处理单行时,可能是利用了两个命令之间的属性进行区分,比如,利用&能够很快地区分前后两段内容,因此,else和&的意思都是一样的。
    第四、处理命令。处理某个命令,或某个命令组合。获得命令执行的环境、变量、对象、过程和结果等。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

hello123world敢提qzwqzw敢说,倡导自由的讨论环境。找茬就不大好了,找不足还好,希望对作者有改进,对读者负责。大家继续!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表