Board logo

标题: for語句中的通配符好像有區別 [打印本页]

作者: bush     时间: 2008-1-8 00:34    标题: for語句中的通配符好像有區別
比如:
在當前目錄中有這些文件:
00.txt ~ 09.txt ,10-.txt ,10a.txt ,10+.txt
如果用這些命令 dir *-.txt
dir *a.txt
dir *+.txt
可以分別找出後面三個文件。
但是如果這樣呢——
for %i in (*-.txt) do echo %i
for %i in (*a.txt) do echo %i
for %i in (*+.txt) do echo %i

我在win98 dos提示符下測試的結果,不是我想要的列出三個文件,而是三次列出了目錄中所有文件! 也就是都等同於*.txt

為什麽會這樣呢?


作者: Climbing     时间: 2008-1-8 09:41
Win98 DOS下的通配符跟cmd下的通配符的规则是不一样的,如果*号出现在前面,其后面的所有字符串将被忽略。

作者: fastslz     时间: 2008-1-8 10:59
Climbing兄98还在用吗?我98的DOS淡忘了

作者: bush     时间: 2008-1-8 14:56    标题: Re: #2

但我的问题在于:
为什么 dir 可以而 for 不可以
他们都是在同等环境下的嘛

作者: lxmxn     时间: 2008-1-8 15:05
Originally posted by bush at 2008-1-8 14:56:

但我的问题在于:
为什么 dir 可以而 for 不可以
他们都是在同等环境下的嘛

两个不同的命令能一样吗?
你试试echo *.txt和dir *.txt有什么区别?

作者: bush     时间: 2008-1-9 01:05
Originally posted by lxmxn at 2008-1-8 03:05 PM:

两个不同的命令能一样吗?
你试试echo *.txt和dir *.txt有什么区别?


你这个差别大了,一个支持通配符,另一个不支持

而for ,dir 都是支持通配符,我只是觉得for语句的支持方式残缺不缺很怪异,一不小心就会误用

所有的资料都写for支持通配符,可并没有写明有这样的局限性啊


Last edited by bush on 2008-1-9 at 01:07 AM ]

作者: Climbing     时间: 2008-1-9 08:12
Originally posted by fastslz at 2008-1-8 10:59:
Climbing兄98还在用吗?我98的DOS淡忘了


DOS 7.10应该就属于98的DOS啊,不过98确实很久没用过了。

现在想想,98实在是太不稳定了。

作者: lxmxn     时间: 2008-1-9 12:43    标题: 回复 bush
我这样说的意思就是:每个命令对通配符的支持不一样,不能一概而论。有的支持得比较好,有的只是支持部分,有的甚至不支持。具体情况具体对待了。