Board logo

标题: 批处理中与for /f有关的一点小发现,与菜鸟一起分享 [打印本页]

作者: p05401144    时间: 2009-1-10 10:02     标题: 批处理中与for /f有关的一点小发现,与菜鸟一起分享

我是菜鸟,注册论坛才3天,昨天我在做for应用入门训练第三题“将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口” 时,偶然有了一个小发现,现在与广大菜鸟同志们一起分享
我做的是:
@echo off
for /f "tokens=1-3" %%i in (bbs bathome.net) do echo %%i %%j %%k
pause
运行结果是:系统找不到文件bbs
然后我把它改成:
@echo off
for /f "tokens=1-3" %%i in ("bbs bathome.net") do echo %%i %%j %%k
pause
结果就显示出来了。
这下我就纳闷了,怎么只多了个“”就出来了呢,于是我又查阅了关于for命令的教程(for语句从入门到精通),发现这句话“读取文本文件的内容,请使用 for /f 语句!”,这时我明白了,原来在第一个程序中的(bbs bathome.net)只是被当作文件名bbs,而不是一段文件的内容,所以运行结果是系统找不到文件bbs。而在第二个程序中("bbs bathome.net")是被当作一个文件的内容存在,所以显示了bbs bathome.net.
通过这次我发现基础细节是多么重要,表面上以为自己搞懂了,可一做起来总是会出点问题,不是这差点东西,就是那错点什么。如果不把基础细节抠好,那么将永远是个菜鸟(不好意思,只是有感而发,并没有教训人的意思)。
写到这我突然觉得自己的这点小发现确实不算什么,也就一个文件和文件名的区别,老鸟们看了肯定要笑。呵呵,
各位batman们,如果确实菜到和我一样,那就当是交流交流,如果是老鸟,那就当是娱乐娱乐吧。

[ 本帖最后由 p05401144 于 2009-1-10 15:31 编辑 ]
作者: aabb    时间: 2009-1-11 16:35

一开始学习的时候也会犯这个错,但是多写代码就不会了,FOR的命令很复杂,应用时要多加小心!!!
作者: zjw767676    时间: 2009-1-11 19:38

原来是这样!一开始我也搞错了
作者: 心愿怕人    时间: 2009-2-1 19:29

呵呵,是啊!一开始学都会碰到这样的问题!谢谢分享!
作者: denev2004    时间: 2009-2-4 15:35

呵呵,我也出过一次错
在那里写一个dos命令的时候
本来命令是应该用单引号括起来的,我没有括,就运行失败了. . .
作者: sjzong    时间: 2009-4-14 15:07

我也犯这样的错误的!
作者: xmaoh234    时间: 2009-5-7 18:07

和C语言差不多,对字符串的引用要加“”,确实很容易丢掉。。。这就要求我们写批处理时,一定要注意一些细间问题
作者: curious    时间: 2009-5-8 07:30     标题: type

  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 (……)
作者: hy55310    时间: 2009-8-24 19:33

是这样的如果不用“”,FOR就把它看成是三个文件了
作者: canyuexiaolang    时间: 2009-8-24 20:10

字符串是要用引号括起来的,否则BAT就会当成文件来处理
作者: Lumiere    时间: 2009-8-24 22:00

for命令教程里有喔,很清楚的写明了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2