中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-07 10:15
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怪事,FOR循环竟然会跳到文件开始…… 查看 679 回复 7
楼 主 怪事,FOR循环竟然会跳到文件开始…… 发表于 2008-01-31 19:48 ·  中国 四川 成都 电信
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
@echo off
echo Input the find string:
set /p fndstr=String:
for /f "delims=" %%a in ('dir /s/b .\*.java') do (
findstr /i /n "%fndstr%" "%%a"
echo %%a
echo ------------------------------------------------------
)
echo result was in file「findrst.txt」,please see there....
pause



请问各位达人,这是为何啊。想不通。。。
2 发表于 2008-01-31 19:57 ·  中国 四川 成都 电信
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
晕,这会没人吗?只好明天来看看结果了。
拜托啦。
3 发表于 2008-01-31 23:47 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
代码没问题呀,如果*.java不是文本文件,怪事就不怪了
strings.exe "%%a"|findstr /i /n "%fndstr%"

http://www.microsoft.com/technet/sysinternals/miscellaneous/strings.mspx
第一高手 第二高手

4 发表于 2008-02-01 13:37 ·  中国 四川 成都 电信
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
如果*.java不是文本文件,怪事就不怪了

可否详细解释下呢?谢谢。
5 发表于 2008-02-01 14:01 ·  中国 四川 成都 电信
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
在CMD里面运行那句话可以出结果,但是在批处理中就不行了。谁能告诉下个中乾坤啊。万分感激呢。
6 发表于 2008-02-01 14:05 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
貌似unicode作怪

看那个e文说明,不是很懂。。。大概就是有些unicode的字符好像处理会有问题。。
7 发表于 2008-02-01 15:46 ·  中国 四川 成都 电信
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
直接在CMD下运行FOR循环不会出错。又是为何?他们应该是同一级别的吧,这个应该不涉及延时之类的因素吧。
8 发表于 2008-02-01 15:49 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
那就是输出可能牵扯到吧。

C:\Documents and Settings\ayumi>cmd /?
启动 Windows XP 命令解释程序一个新的实例

CMD
string]

/C 执行字符串指定的命令然后终断
/K 执行字符串指定的命令但保留
/S 在 /C 或 /K 后修改字符串处理(见下)
/Q 关闭回应
/D 从注册表中停用执行 AutoRun 命令(见下)
/A 使向内部管道或文件命令的输出成为 ANSI
/U 使向内部管道或文件命令的输出成为 Unicode


你改变下/U参数。。。
论坛跳转: