|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
|
2007-1-28 21:45 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
|
2007-1-28 23:08 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
18 楼』:
哈哈……这个好玩~:)
经打开 @echo on 之后发现与 Findstr 有关:
运行下面的代码(文件名为: “新建 批处理(2).bat” ):
@echo on
::off
dir/b|findstr /i /v "%~n0.bat"|findstr /n .*
pause 开启 @echo on ,运行代码过程:
dir/b | findstr /i /v "新建 批处理(2).bat" | findstr /n .*
……
…… 发现上面被 Findstr 搜索的文件名 “新建 批处理(2).bat” 是一个中间含有空格的文件名,而这个含有空格的文件名也是要被 Findstr 搜索的字符串。
但是, Findstr 的特性是 “字符串A 字符串B” 虽然它们在同一个引号范围之内,但是 Findstr 的特性是会将它们理解为要同时搜索满足上面两个条件,即:只要含有“字符串A”或是含有“字符串B”,那么都符合 Findstr 要搜索的目标。
而将上面引号中的要搜索的文件名正好有空格,所以 Findstr 理解为:查找 “新建” 或是含有 “批处理(2).bat” 的字符串就满足条件,再加上 /V 要滤掉目标,而正在这两个批处理的文件名都含有 “新建” 这个检索的成功条件,结果就被滤掉了。
将文件名改名,去掉中间空格以后,搜索正确,就推断就上面因素~:)
此帖被 +5 点积分 点击查看详情 评分人:【 ccwan 】 | 分数: +5 | 时间:2007-1-28 23:15 |
|
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2007-1-28 23:11 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
19 楼』:
谢谢两位的精彩解释。
看来若要命令成功执行,要保证该批处理名称中尽量不要包含空格才行。
[ Last edited by ccwan on 2007-1-28 at 11:24 PM ]
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-1-28 23:23 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
20 楼』:
名称中带空格也是可以的,解决办法:
一、如我在17楼所说的,要给findstr加上 /c: 开关;
二、把 findstr 换成 find。
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2007-1-28 23:29 |
|
|
g4rr
初级用户
积分 68
发帖 32
注册 2007-1-24 来自 广东潮州
状态 离线
|
『第
21 楼』:
Quote: | Originally posted by ccwan at 2007-1-24 08:57 AM:
[code]set/a a=%random%%%20+1
for /f "tokens=1,2 delims=:" %%i in ('dir/b ^|findstr /n .*') do (if " ... |
|
为什么会有一个^呢?
在批处理中就得用^,在命令符下就不用.能给个链接吗?ccwan兄
我找不到相关的说明
[ Last edited by g4rr on 2007-1-28 at 05:40 PM ]
|
|
2007-1-29 06:37 |
|
|
g4rr
初级用户
积分 68
发帖 32
注册 2007-1-24 来自 广东潮州
状态 离线
|
『第
22 楼』:
namejm的解说真好.明白了!谢谢
感觉得出大家对批处量的着迷程度了...为了一点小问题都可以这样讨论着.越来越喜欢这种气氛了.
可惜,目前来说我只能作为一个旁边者去感觉你们的激情并兴奋着.而还不能参与到讨论当中.
我会努力成为你们一员的..
谢谢你们.ccwan,namejm,redtek
[ Last edited by g4rr on 2007-1-28 at 05:54 PM ]
|
|
2007-1-29 06:50 |
|
|
hxmupdata
初级用户
积分 76
发帖 39
注册 2007-3-9
状态 离线
|
『第
23 楼』:
Quote: | Originally posted by g4rr at 2007-1-28 17:50:
namejm的解说真好.明白了!谢谢
感觉得出大家对批处量的着迷程度了...为了一点小问题都可以这样讨论着.越来越喜欢这种气氛了.
可惜,目前来说我只 ... |
|
同上.................................
|
狐狸喜欢狡猾。。 |
|
2007-3-14 22:50 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
|
2007-3-15 11:37 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
25 楼』:
set/a a=%random%%%20+1
for /f "tokens=1,2 delims=:" %%i in ('dir/b ^|findstr /n .*') do (if "%%i"=="%a%" start %%~fsj)
不需要变量延迟吗???
已经明白了。谢谢lxmxn
[ Last edited by wudixin96 on 2007-4-4 at 01:49 AM ]
|
|
2007-4-4 01:27 |
|
|
yulei
新手上路
积分 1
发帖 1
注册 2009-2-16 来自 携享家园
状态 离线
|
『第
26 楼』:
哈哈,不错!个个高手
|
携享家园 |
|
2009-2-17 20:05 |
|