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

[系统相关] 获取系统版本的批处理为何出错?

原来写在这里的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' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

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

TOP

你是不是在记事本里面写的代码,然后复制到论坛?看看记事本是否设置了自动换行。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3楼 的帖子

是啊
记事本是自动换行的
但是我拉了够长的 为什么复制进来再复制出去会这样

TOP

回复 2楼 的帖子

那那些含有=号的输出要用什么命令才可以显示

TOP

  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
复制代码
我这里测试没有任何问题
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

还是划拉注册表吧  

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion           ProductName

TOP

for /f "tokens=2 delims=[版本" %%i in ('ver') do (set a=%%i&set b=!a:]=!&set 光标停这里回车再保存代码运行c=!b: =!)

TOP

回复 8楼 的帖子

为啥要加这个多余的回车?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9楼 的帖子

加回车就出现 1楼的情况

TOP

回复 10楼 的帖子

不加不是挺好的么,为啥要加呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11楼 的帖子

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

TOP

返回列表