Board logo

标题: [系统相关] [已解决]批处理如何判断文件版本执行不同的命令? [打印本页]

作者: freesoft00    时间: 2015-5-10 15:07     标题: [已解决]批处理如何判断文件版本执行不同的命令?

本帖最后由 freesoft00 于 2015-5-10 19:22 编辑
  1. @echo off
  2. ver|find /i " 6.2">nul &&(
  3. echo www
  4. )||(
  5. echo tttt
  6. echo tttt www
  7. )
  8. pause
复制代码
示例代码如上,如果是win8则执行第一条命令,如果不是则执行第二条命令,为什么有时候正常,有时候执行的时候还会执行第二条命令能,因为第二条命令在win8中没有所以会有错误提示。这是为什么呢。
那项这种有没有更改的方法排除这个有时候出现的判断错误呢。
作者: pcl_test    时间: 2015-5-10 15:50

  1. @echo off
  2. for /f "delims=" %%a in ('ver^|find "6.2"') do set "n=%%a"
  3. if not defined n (echo NO) else (echo YES)
  4. pause
复制代码
  1. @echo off
  2. ver|find "6.2" >nul &&(echo YES&pause&exit)
  3. echo NO&pause&exit
复制代码
  1. @echo off
  2. ::wmic os get caption可获得较靠谱的系统版本
  3. for /f "tokens=1* delims==" %%a in ('wmic os get Caption /value') do echo;%%b
  4. pause
复制代码

作者: gawk    时间: 2015-5-10 16:39

同一台Win8,有时候成功有时候失败?
很多台Win8,有的成功有的失败?

你的问题属于哪种情况呢
作者: freesoft00    时间: 2015-5-10 16:51

同一台win8,
不知道是这个代码,我发现使用这个很容易出现这种情况。
  1. ver|find /i " 6.2">nul &&(
  2. echo wwww
  3. )||(
  4. echo tttt
  5. echo tttt dddd
  6. )
复制代码
我没有发现这个段代码哪里有错误,但是确实是有这个问题。
作者: freesoft00    时间: 2015-5-10 16:54

本来如果是win8之显示wwww就ok了,可是有时候会出现
tttt dddd,如果是实际的命令可以看到批处理的窗口中有这个命令的错误提示。不是每次都有,但是有一定的几率。
所以我想不用这个算了,省的有错误,换一个形式的代码完成这个任务算了。
作者: bailong360    时间: 2015-5-10 18:44

回复 5# freesoft00
echo wwww执行失败也会执行后面的命令
建议用errorlevel
作者: freesoft00    时间: 2015-5-10 18:56

回复 6# bailong360


   哦,也可能是你说的情况吧。
那要具体如何写呢?
作者: bailong360    时间: 2015-5-10 19:10

  1. @echo off
  2. ver|find /i " 6.2">nul
  3. if errorlevel 1 (
  4.   echo tttt
  5.   echo tttt www
  6. ) else (
  7.   echo ttt
  8. )
复制代码

作者: freesoft00    时间: 2015-5-10 19:21

好的,感谢上面的各位!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2