无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5419|回复: 10
打印 上一主题 下一主题

请教有关脚本程序变量内容传递问题

[复制链接]
跳转到指定楼层
1#
发表于 2007-2-26 11:35:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
vbs脚本功能巨大,很多dos命令行不能完成或很复杂的工作,vbs轻而易举。

可惜自己对vbs一窍不通,现请教各位大大,如何将vbs的一个变量内容传递给dos bat文件使用
(可以由vbs创建一个winows公共变量,然后由dos bat文件读取,可是自己不懂vbs如何才能创建
这样一个公共变量)。

谢谢了。
2#
 楼主| 发表于 2007-2-26 11:55:36 | 只看该作者
我是想得到正在运行的操作系统(名称或特征号),然后用bat(cmd)文件处理。
回复

使用道具 举报

3#
发表于 2007-2-26 16:03:24 | 只看该作者
  DOS命令ver可以获取当前系统的完整版本号,无须用vbs获取。
回复

使用道具 举报

4#
 楼主| 发表于 2007-2-26 17:02:02 | 只看该作者
ver好像不能分别一个系统的具体版本(如XP的HOME和PROFESSIONAL)。
回复

使用道具 举报

5#
发表于 2007-2-26 17:16:59 | 只看该作者
  如果要查找具体版本,systeminfo 命令可以提供详细的信息。
回复

使用道具 举报

6#
发表于 2007-2-26 18:57:13 | 只看该作者
原帖由 willsion 于 2007-2-26 11:55 发表
我是想得到正在运行的操作系统(名称或特征号),然后用bat(cmd)文件处理。

Namejm 说的没错,楼主所需要获取的这些信息,在系统注册表中都有保存,批处理完全可以胜任,也可以借助 Systeminfo 命令。

举例说通过下面两种不同的批处理来获取 Windows 产品的安装 ID。


命令1.CMD
  1. @echo off
  2. for /f "tokens=1,*" %%i in ('systeminfo ^|find "产品 ID:"') do echo %%i %%j
  3. echo.&&pause
复制代码


命令2.CMD
  1. @echo off
  2. for /f "tokens=3*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductId^|find /i "ProductId"') do echo 产品 ID:        %%i %%j
  3. echo.&&pause
复制代码
回复

使用道具 举报

7#
 楼主| 发表于 2007-2-26 20:34:59 | 只看该作者
多谢namejm和老毛桃两位高人,解决问题有些眉目了。

[ 本帖最后由 willsion 于 2007-2-26 08:43 PM 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2007-2-26 23:19:17 | 只看该作者
痛苦。好不容易才弄好。

现把批处理程序贴出,请各位大大特别是namejm和老毛桃两位高人指正。

程序功能为确定正在运行的Windows Vista版本。

程序1(直接读取注册表版本,速度快,不过由于注册表可能被修改,可能不准确)
@echo off
for /f "tokens=6,7" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName^|find /i "ProductName"') do set os1=%%i && set os2=%%j

set VH="Home "
set VB="Business"
set VU="Ultimate"
set PR="Premium"
set BA="Basic"


if %os1% == %VH:~1,4% goto home
if %os1% == %VB:~1,8% goto business
if %os1% == %VU:~1,8% goto Ultimate
goto err

:home
if %os2% == %PR:~1,7% echo "This is Windows Vista Home Premium."
if %os2% == %BA:~1,5% echo "This is Windows Vista Home Basic."
goto end

:business
echo "This is Windows Vista Business."
goto end

:ultimate
echo "This is Windows Vista Ultimate."
goto end

:err
echo "Don't know this system."

:end
pause

程序2(通过systeminfo读取信息)
@echo off
for /f "tokens=6,7" %%i in ('systeminfo ^|find "OS 名称:"') do set os1=%%i && set os2=%%j

set VH="Home "
set VB="Business"
set VU="Ultimate"
set PR="Premium"
set BA="Basic"


if %os1% == %VH:~1,4% goto home
if %os1% == %VB:~1,8% goto business
if %os1% == %VU:~1,8% goto Ultimate
goto err

:home
if %os2% == %PR:~1,7% echo "This is Windows Vista Home Premium."
if %os2% == %BA:~1,5% echo "This is Windows Vista Home Basic."
goto end

:business
echo "This is Windows Vista Business."
goto end

:ultimate
echo "This is Windows Vista Ultimate."
goto end

:err
echo "Don't know this system."

:end
pause
回复

使用道具 举报

9#
 楼主| 发表于 2007-2-26 23:56:44 | 只看该作者
上面程序走了大弯路了。修改如下:
程序1:
@echo off
for /f "tokens=6,7" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName^|find /i "ProductName"') do set os1=%%i && set os2=%%j

if %os1% == Home goto home
if %os1% == Business goto business
if %os1% == Ultimate goto ultimate
goto err

:home
if %os2% == Premium echo "This is Windows Vista Home Premium."
if %os2% == Basic   echo "This is Windows Vista Home Basic."
goto end

:business
echo "This is Windows Vista Business."
goto end

:ultimate
echo "This is Windows Vista Ultimate."
goto end

:err
echo "Don't know this system."

:end
pause

程序2:
@echo off
for /f "tokens=6,7" %%i in ('systeminfo ^|find "OS 名称:"') do set os1=%%i && set os2=%%j

if %os1% == Home goto home
if %os1% == Business goto business
if %os1% == Ultimate goto ultimate
goto err

:home
if %os2% == Premium echo "This is Windows Vista Home Premium."
if %os2% == Basic   echo "This is Windows Vista Home Basic."
goto end

:business
echo "This is Windows Vista Business."
goto end

:ultimate
echo "This is Windows Vista Ultimate."
goto end

:err
echo "Don't know this system."

:end
pause
回复

使用道具 举报

10#
发表于 2007-2-27 00:11:52 | 只看该作者
  把你的代码精简一下:

  1. @echo off
  2. for /f "tokens=6,7" %%i in ('systeminfo ^|find "OS 名称:"') do (
  3.     call :%%i %%j 2>nul||goto err
  4. )
  5. pause
  6. exit

  7. :home
  8. if /i "%1"=="Premium" (
  9.     echo "This is Windows Vista Home Premium."
  10. ) else (
  11.     echo "This is Windows Vista Home Basic."
  12. )
  13. goto :eof

  14. :business
  15. echo "This is Windows Vista Business."
  16. goto :eof

  17. :ultimate
  18. echo "This is Windows Vista Ultimate."
  19. goto :eof

  20. :err
  21. echo "Don't know this system."
  22. pause
复制代码

  如果只是为了显示系统的版本而无须对不同版本做相应操作的话,可以使用如下代码:

  1. @echo off
  2. for /f "tokens=6,7" %%i in ('systeminfo ^|find "OS 名称:"') do (
  3.     echo "This is Windows Vista %%i %%j."
  4. )
  5. pause
复制代码
回复

使用道具 举报

11#
 楼主| 发表于 2007-2-27 08:56:59 | 只看该作者
原帖由 namejm 于 2007-2-27 12:11 AM 发表
  把你的代码精简一下:

@echo off
for /f "tokens=6,7" %%i in ('systeminfo ^|find "OS 名称:"') do (
    call :%%i %%j 2>nul||goto err
)
pause
exit

:home
if /i &qu ...


太感谢了,问题得到圆满解决了。amejm和老毛桃兄真乃批处理专家,佩服,佩服。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-27 17:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表