[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理提取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 编辑 ]
1

评分人数

    • hanyeguxing: 感谢给帖子标题标注[已解决]字样PB + 2
山东大汉,呵呵。

  1. @echo off
  2. for /f "tokens=2 delims=.本" %%a in ('VER') do set a=%%a
  3. echo %a:~1%
  4. pause
复制代码

if a=5 goto :5 应该写成 if %a%==5 goto :5

[ 本帖最后由 hanyeguxing 于 2010-12-27 14:37 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 2楼 的帖子

谢谢给出答案并指正错误!
我还想问您一下,for /f 语句中,如果delims没有指定分隔符,那么批处理默认以空格或跳格做分割,那么如果指定了分隔符(比如“.“和”本“),批处理还会把空格也同时当作分隔符吗?
你第一次写的delims=. token=5的那条命令我试了试在XP上是可以的,我很困惑,那条命令如果只以点作为分隔符、取第5节的话,取出来的字符肯定不是”5“或”6“,看来空格不管什么时候都是作为分隔符的;可你新写的这条命令中,delims=.本 token=2,又不可能是空格仍做分隔符,因为空格还做分隔符的话,第二节取出来的肯定是”Windows“这块儿。请解答一下!
山东大汉,呵呵。

TOP

1,我写代码时不会把delims=.放到前,而是习惯性的放到最后。
2,在for /f中,delims=和elo=都有默认,但指定后就会替换原来的默认。
3,我第一次写的时候是"tokens=5 delims=. ",delims=后是点和空格。但刷新后看到楼主要兼容“Microsoft Windows [版本 6.1.6700]”,所以就改了。
4,"tokens=5 delims=. "和"delims=. tokens=5"是有区别的,第一种以点和空格为分隔,第二种只以点为分隔,因为这里的空格成为了关键字之间的分隔。
1

评分人数

    • SkyPE: 谢谢!!技术 + 1
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

[code]

  1. @echo off
  2. ver >ver.txt
  3. for /f "delims=[ tokens=2" %%a in (ver.txt) do (set b=%%a)
  4. @echo %b:~3,1%
  5. pause
  6. [\code]
  7. ::WINxp sp3下测试通过…
复制代码

[ 本帖最后由 ithinkican 于 2010-12-27 16:46 编辑 ]
2

评分人数

    • Batcher: 请编辑自己的帖子,把代码放到code标签里面 ...PB -2
    • SkyPE: 谢谢帮忙技术 + 1

TOP

回复 1楼 的帖子

避开for,

  1. @echo off
  2. set ver=Microsoft Windows XP [版本 5.1.2600]
  3. rem 我机子上ver命令不能用了....
  4. %ver:*版本 =set ver=%
  5. if "%ver:~0,1%" == "5" goto :5
  6. if "%ver:~0,1%" == "6" goto :6
  7. :5
  8. echo %ver:~0,1%
  9. pause
  10. :6
  11. echo %ver:~0,1%
  12. pause
复制代码

[ 本帖最后由 lxzzr 于 2010-12-27 15:32 编辑 ]

TOP

回复 7楼 的帖子

这个看不懂,盼大侠能逐句为像我一样的初学者解释一下!
主要是不明白
              %ver:*版本 =set ver=%
是什么意思,
还有”~“这个符号的作用
山东大汉,呵呵。

TOP

回复 8楼 的帖子

%ver:*版本 =set ver=%
rem 这句其实就是赋值,set ver=5.1.2600
"%ver:~0,1%字符串截取,参考set /?

TOP

[\code]

  1. for /f "delims=版本 tokens=2" %%a in ('ver') do (set b=%%a)
  2. @echo %b:~1,1%
  3. pause
复制代码

::xpSp3下测试通过

[ 本帖最后由 ithinkican 于 2010-12-27 16:47 编辑 ]

TOP

返回列表