![Board logo](images/default/logo.gif)
标题: [文本处理] 请教批处理命令findstr的异常问题 [打印本页]
作者: sinun 时间: 2014-12-9 23:51 标题: 请教批处理命令findstr的异常问题
本帖最后由 sinun 于 2014-12-12 21:56 编辑
请教老师们一个findstr的异常问题,先多谢了!!!
如下,注册表值改为第一个0000041E输出异常,输出“没找到“,但改为第二个00000409又输出正常,输出“找到了“。注册表值除了第二个正常外,其余的返回值都是错的,不知是哪里出错了?请高手们帮帮忙!- @echo off
- reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale|findstr "0000041E 00000409 00001401 00003C01 00000C01 00001C01 00000439" >nul 2>nul&& goto LocaleOK || goto LocaleNG
-
- :LocaleOK
- echo,找到了
- pause&exit
-
- :LocaleNG
- echo,没找到
- pause
复制代码
作者: sinun 时间: 2014-12-11 00:41
哪位大师帮忙解决下?不胜感激!
作者: amwfjhh 时间: 2014-12-11 16:48
第一与第二个区别是第一个中带有英文字符,看看是否存值时作了大小写转变,将findstr 加个/i参数试试。
作者: sinun 时间: 2014-12-12 21:51
第一与第二个区别是第一个中带有英文字符,看看是否存值时作了大小写转变,将findstr 加个/i参数试试。
amwfjhh 发表于 2014-12-11 16:48 ![](http://bbs.bathome.net/images/common/back.gif)
第一个中带有英文字符,但第三个和最后一个不带英文字符的返回值也是错的,将findstr 加/i也是同样NG,现在不知道哪里出问题了!
作者: c755731262 时间: 2014-12-13 18:40
没看懂你到底想说的问题在哪
你想说的是把findstr 后面的任意一个字符串作为键值来检测么
作者: sinun 时间: 2014-12-13 20:19
回复 5# c755731262
是,就是这个意思。为什么只有第二个字符串检测正确,其余都是错的?
作者: apang 时间: 2014-12-13 20:34
回复 6# sinun
先修改注册表值为0000041E,然后分别执行下面两个批处理,把a.txt和b.txt内容发出来看看- @echo off
- reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale>a.txt
- pause
复制代码
- @echo off
- reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale|findstr "0000041E">b.txt
- pause
复制代码
作者: sinun 时间: 2014-12-13 22:25
回复 7# apang
注册表改成0000041E后,a.txt的内容如下:- ! REG.EXE VERSION 3.0
-
- HKEY_CURRENT_USER\Control Panel\International
- Locale REG_SZ 0000041E
复制代码
b.txt内容是空,cmd显示“无法设置区域设置”
作者: apang 时间: 2014-12-13 22:39
本帖最后由 apang 于 2014-12-13 22:48 编辑
回复 8# sinun
你用的什么系统啊?难道不支持findstr ?
老老实实用 for,试试- @echo off
- for %%a in (041E 0409 1401 3C01 0C01 1C01 0439) do set "_0000%%a=1"
- set "key=HKCU\Control Panel\International"
- for /f "tokens=1,3" %%a in ('reg query "%key%" /v Locale') do (
- if /i "%%a" == "Locale" (
- if defined _%%b (goto :LocaleOK) else goto :LocaleNG
- )
- )
- echo,指定的注册表项或值不存在
- pause & exit /b
-
- :LocaleOK
- echo,找到了
- pause&exit
-
- :LocaleNG
- echo,没找到
- pause
复制代码
作者: sinun 时间: 2014-12-13 23:24
回复 9# apang
系统是XP SP3,不知为什么用findstr有些不对。用for也可以解决问题,谢谢大师!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |