Board logo

标题: [系统相关] 获取系统版本的批处理为何出错? [打印本页]

作者: leap    时间: 2010-10-15 14:50     标题: 获取系统版本的批处理为何出错?

原来写在这里的http://bbs.bathome.net/viewthread.php?tid=9609&page=1#pid62309
测试的时候是显示  WINXP=5.1.2600
复制回来的时候
@echo off&setlocal enabledelayedexpansion
for /f "tokens=2 delims=[版本" %%i in ('ver') do (set a=%%i&set b=!a:]=!&set
c=!b: =!)这里隔行了
if "%a:~1,3%" equ "5.1" echo WINXP=%c%
if "%a:~1,3%" equ "5.2" echo WIN2003=%c%
if "%a:~1,3%" equ "6.1" echo WIN7=%c%
pause>nul

运行结果
a= 5.1.2600]
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\Administrator\Application Data
b= 5.1.2600
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=n048
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\Administrator
LOGONSERVER=\\n048
NUMBER_OF_PROCESSORS=4
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 16 Model 5 Stepping 3, AuthenticAMD
PROCESSOR_LEVEL=16
PROCESSOR_REVISION=0503
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
USERDOMAIN=n048
USERNAME=Administrator
USERPROFILE=C:\Documents and Settings\Administrator
windir=C:\WINDOWS
'c' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
作者: cjiabing    时间: 2010-10-15 20:36

不奇怪,【&】前面必须使用转义符【^】,你后面的set那么多奇怪的符号,我见大大们都是用【call】之类来解决的。
——请把代码用【[code]】括起来!~
作者: Batcher    时间: 2010-10-15 22:52

你是不是在记事本里面写的代码,然后复制到论坛?看看记事本是否设置了自动换行。
作者: leap    时间: 2010-10-16 12:55     标题: 回复 3楼 的帖子

是啊
记事本是自动换行的
但是我拉了够长的 为什么复制进来再复制出去会这样
作者: leap    时间: 2010-10-16 12:57     标题: 回复 2楼 的帖子

那那些含有=号的输出要用什么命令才可以显示
作者: Batcher    时间: 2010-10-16 13:05

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2 delims=[版本" %%i in ('ver') do (set a=%%i&set b=!a:]=!&set c=!b: =!)
  3. if "%a:~1,3%" equ "5.1" echo WINXP=%c%
  4. if "%a:~1,3%" equ "5.2" echo WIN2003=%c%
  5. if "%a:~1,3%" equ "6.1" echo WIN7=%c%
  6. pause>nul
复制代码
我这里测试没有任何问题
作者: bluewing009    时间: 2010-10-16 14:09

还是划拉注册表吧  

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion           ProductName
作者: leap    时间: 2010-10-16 17:25

for /f "tokens=2 delims=[版本" %%i in ('ver') do (set a=%%i&set b=!a:]=!&set 光标停这里回车再保存代码运行c=!b: =!)
作者: Batcher    时间: 2010-10-16 18:56     标题: 回复 8楼 的帖子

为啥要加这个多余的回车?
作者: leap    时间: 2010-10-18 11:14     标题: 回复 9楼 的帖子

加回车就出现 1楼的情况
作者: Batcher    时间: 2010-10-18 11:55     标题: 回复 10楼 的帖子

不加不是挺好的么,为啥要加呢?
作者: leap    时间: 2010-10-20 10:46     标题: 回复 11楼 的帖子

我想知道的是为什么加了会变成1楼的输出




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