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

批处理中与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 编辑 ]
1

评分人数

一开始学习的时候也会犯这个错,但是多写代码就不会了,FOR的命令很复杂,应用时要多加小心!!!

TOP

原来是这样!一开始我也搞错了

TOP

呵呵,是啊!一开始学都会碰到这样的问题!谢谢分享!

TOP

呵呵,我也出过一次错
在那里写一个dos命令的时候
本来命令是应该用单引号括起来的,我没有括,就运行失败了. . .
setlocal enabledelayedexpansion

TOP

我也犯这样的错误的!

TOP

和C语言差不多,对字符串的引用要加“”,确实很容易丢掉。。。这就要求我们写批处理时,一定要注意一些细间问题

TOP

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 (……)

TOP

是这样的如果不用“”,FOR就把它看成是三个文件了

TOP

字符串是要用引号括起来的,否则BAT就会当成文件来处理

TOP

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

TOP

返回列表