标题: [系统相关] [已解决]批处理提取VER命令的结果中的指定字符? [打印本页]
作者: SkyPE 时间: 2010-12-27 14:25 标题: [已解决]批处理提取VER命令的结果中的指定字符?
问题我已在本文标题描述的很详细,请仔细看。
这个字符的话,就现在来说,不是“5”就是“6”,我想让批处理分析出是“5”还是“6”,然后
if a=5 goto :5
if a=6 goto :6
让批处理根据系统版本继续做剩下的事情。
请给个For命令使批处理能够把“版本”二字后面的第二个字符赋予给变量a,谢谢!
附:
VER命令的结果有如下几种情况:
Microsoft Windows 2000 [版本 5.00.2195]
Microsoft Windows XP [版本 5.1.2600]
Microsoft Windows [版本 5.2.3790]
Microsoft Windows [版本 6.0.6000]
Microsoft Windows [版本 6.0.6001]
Microsoft Windows [版本 6.1.6700]
[ 本帖最后由 SkyPE 于 2010-12-27 15:29 编辑 ]
作者: hanyeguxing 时间: 2010-12-27 14:31
- @echo off
- for /f "tokens=2 delims=.本" %%a in ('VER') do set a=%%a
- echo %a:~1%
- pause
复制代码
if a=5 goto :5 应该写成 if %a%==5 goto :5
[ 本帖最后由 hanyeguxing 于 2010-12-27 14:37 编辑 ]
作者: SkyPE 时间: 2010-12-27 15:13 标题: 回复 2楼 的帖子
谢谢给出答案并指正错误!
我还想问您一下,for /f 语句中,如果delims没有指定分隔符,那么批处理默认以空格或跳格做分割,那么如果指定了分隔符(比如“.“和”本“),批处理还会把空格也同时当作分隔符吗?
你第一次写的delims=. token=5的那条命令我试了试在XP上是可以的,我很困惑,那条命令如果只以点作为分隔符、取第5节的话,取出来的字符肯定不是”5“或”6“,看来空格不管什么时候都是作为分隔符的;可你新写的这条命令中,delims=.本 token=2,又不可能是空格仍做分隔符,因为空格还做分隔符的话,第二节取出来的肯定是”Windows“这块儿。请解答一下!
作者: hanyeguxing 时间: 2010-12-27 15:24
1,我写代码时不会把delims=.放到前,而是习惯性的放到最后。
2,在for /f中,delims=和elo=都有默认,但指定后就会替换原来的默认。
3,我第一次写的时候是"tokens=5 delims=. ",delims=后是点和空格。但刷新后看到楼主要兼容“Microsoft Windows [版本 6.1.6700]”,所以就改了。
4,"tokens=5 delims=. "和"delims=. tokens=5"是有区别的,第一种以点和空格为分隔,第二种只以点为分隔,因为这里的空格成为了关键字之间的分隔。
作者: ithinkican 时间: 2010-12-27 15:24 标题: [code]
- @echo off
- ver >ver.txt
- for /f "delims=[ tokens=2" %%a in (ver.txt) do (set b=%%a)
- @echo %b:~3,1%
- pause
- [\code]
- ::WINxp sp3下测试通过…
复制代码
[ 本帖最后由 ithinkican 于 2010-12-27 16:46 编辑 ]
作者: lxzzr 时间: 2010-12-27 15:30 标题: 回复 1楼 的帖子
避开for,
-
- @echo off
- set ver=Microsoft Windows XP [版本 5.1.2600]
- rem 我机子上ver命令不能用了....
- %ver:*版本 =set ver=%
- if "%ver:~0,1%" == "5" goto :5
- if "%ver:~0,1%" == "6" goto :6
-
- :5
- echo %ver:~0,1%
- pause
- :6
- echo %ver:~0,1%
- pause
复制代码
[ 本帖最后由 lxzzr 于 2010-12-27 15:32 编辑 ]
作者: SkyPE 时间: 2010-12-27 15:43 标题: 回复 7楼 的帖子
这个看不懂,盼大侠能逐句为像我一样的初学者解释一下!
主要是不明白
%ver:*版本 =set ver=%
是什么意思,
还有”~“这个符号的作用
作者: lxzzr 时间: 2010-12-27 15:46 标题: 回复 8楼 的帖子
%ver:*版本 =set ver=%
rem 这句其实就是赋值,set ver=5.1.2600
"%ver:~0,1%字符串截取,参考set /?
作者: ithinkican 时间: 2010-12-27 16:01 标题: [\code]
- for /f "delims=版本 tokens=2" %%a in ('ver') do (set b=%%a)
- @echo %b:~1,1%
- pause
复制代码
::xpSp3下测试通过
[ 本帖最后由 ithinkican 于 2010-12-27 16:47 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |