![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 12:17 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]请教关于random变量的用法 |
| 可打印版本 6,146 / 25 |
| 第16楼 ccwan | 发表于 2007-01-28 21:45 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
呵呵,最新发现:我的桌面上有 ”新建 批处理.bat“ 和 “新建 批处理(2).bat”这两个文件,前者代码
后者代码 运行前者结果: ![]() 运行后者结果: ![]() 竟然这样:前者可以识别后者,后者不能识别前者。有意思吧 |
|
| 第17楼 namejm | 发表于 2007-01-28 23:08 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
其实,这个是 findstr "字符串1+空格+字符串2+空格+字符串3+空格……" 语句的一个重要特点,那就是:只要找到引号内以空格分隔的任意一个字符串,findstr就认为找到了匹配的字符串,比如如下代码:
test.txt的内容分别用abc、123、xyz或它们的组合abc123、123xyz等来测试,你会发现以上代码的执行结果始终显示test.txt的内容。 如果要查找字符串 "abc 123 xyz"(不包括前后引号) ,那么,就得加上 /c: 开关,变成 findstr /c:"abc 123 xyz" test.txt 了。 [ Last edited by namejm on 2007-1-28 at 10:27 AM ] |
|
| 第18楼 redtek | 发表于 2007-01-28 23:11 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
哈哈……这个好玩~:)
经打开 @echo on 之后发现与 Findstr 有关: 运行下面的代码(文件名为: “新建 批处理(2).bat” ): 开启 @echo on ,运行代码过程: 发现上面被 Findstr 搜索的文件名 “新建 批处理(2).bat” 是一个中间含有空格的文件名,而这个含有空格的文件名也是要被 Findstr 搜索的字符串。 但是, Findstr 的特性是 “字符串A 字符串B” 虽然它们在同一个引号范围之内,但是 Findstr 的特性是会将它们理解为要同时搜索满足上面两个条件,即:只要含有“字符串A”或是含有“字符串B”,那么都符合 Findstr 要搜索的目标。 而将上面引号中的要搜索的文件名正好有空格,所以 Findstr 理解为:查找 “新建” 或是含有 “批处理(2).bat” 的字符串就满足条件,再加上 /V 要滤掉目标,而正在这两个批处理的文件名都含有 “新建” 这个检索的成功条件,结果就被滤掉了。 将文件名改名,去掉中间空格以后,搜索正确,就推断就上面因素~:) |
|
| 第19楼 ccwan | 发表于 2007-01-28 23:23 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
谢谢两位的精彩解释。
看来若要命令成功执行,要保证该批处理名称中尽量不要包含空格才行。 [ Last edited by ccwan on 2007-1-28 at 11:24 PM ] |
|
| 第20楼 namejm | 发表于 2007-01-28 23:29 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
名称中带空格也是可以的,解决办法:
一、如我在17楼所说的,要给findstr加上 /c: 开关; 二、把 findstr 换成 find。 |
|
| 第21楼 g4rr | 发表于 2007-01-29 06:37 |
| 初级用户 发帖 32 积分 68 来自 广东潮州 | |
Originally posted by ccwan at 2007-1-24 08:57 AM: |
|
| 第22楼 g4rr | 发表于 2007-01-29 06:50 |
| 初级用户 发帖 32 积分 68 来自 广东潮州 | |
|
namejm的解说真好.明白了!谢谢
感觉得出大家对批处量的着迷程度了...为了一点小问题都可以这样讨论着.越来越喜欢这种气氛了. 可惜,目前来说我只能作为一个旁边者去感觉你们的激情并兴奋着.而还不能参与到讨论当中. 我会努力成为你们一员的.. 谢谢你们.ccwan,namejm,redtek [ Last edited by g4rr on 2007-1-28 at 05:54 PM ] |
|
| 第23楼 hxmupdata | 发表于 2007-03-14 22:50 |
| 初级用户 发帖 39 积分 76 | |
Originally posted by g4rr at 2007-1-28 17:50: 同上................................. |
|
| 第24楼 jmz573515 | 发表于 2007-03-15 11:37 |
| 银牌会员 发帖 464 积分 1,212 | |
|
留个记号,以后研究...
|
|
| 第25楼 wudixin96 | 发表于 2007-04-04 01:27 |
| 银牌会员 发帖 931 积分 1,928 | |
|
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 ] |
|
| 第26楼 yulei | 发表于 2009-02-17 20:05 |
| 新手上路 发帖 1 积分 1 来自 携享家园 | |
|
哈哈,不错!个个高手
|
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |