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

[注册表类] 批处理如何判断计算机类型然后打开或关闭数字键?

意图如下:
1、判断计算机是台式机还是笔记本
2、根据1返回的结果修改注册表,如果是台式机则打开数字键,如果是笔记本则关闭数字键

请问批处理代码应该怎样写?

另外我写了一个代码但是无法正确达到目的,清帮忙指正。谢谢
  1. wmic path Win32_SystemEnclosure get ChassisTypes /value >ChssisTypes.log
  2. FOR /F "skip=2 delims==" %%I IN (ChssisTypes.log) DO (
  3. SET T=%%I
  4. IF "%T%"=="{3}" REG ADD "HKEY_USERS\.DEFAULT\Control Panel\Keyboard" /v "InitialKeyboardIndicators" /d "2" /f
  5. IF "%T%"=="{10}" REG ADD "HKEY_USERS\.DEFAULT\Control Panel\Keyboard" /v "InitialKeyboardIndicators" /d "0" /f
  6. )
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-5 14:56 编辑 ]

  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "tokens=2 delims==" %%a in ('wmic path Win32_SystemEnclosure get ChassisTypes /value') do (
  3.         set a=%%a
  4.         set b=0
  5.         if !a:~1^,-2!==10 set b=2
  6.         REG ADD "HKU\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /d !b! /f
  7. )
  8. pause
复制代码

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

TOP

回复 2楼 的帖子

谢谢你的代码,我的电脑是台式机,但是我运行后发现注册表相关项的值是0而不是2。请问是怎么回事?

TOP

如果要求台机时设置为2,则:
  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "tokens=2 delims==" %%a in ('wmic path Win32_SystemEnclosure get ChassisTypes /value') do (
  3.         set a=%%a
  4.         set b=0
  5.         if !a:~1^,-2!==3 set b=2
  6.         REG ADD "HKU\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /d !b! /f
  7. )
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 4楼 的帖子

谢谢
再请问一下!a:~1^,-2!的意思是?
如果是在安装系统的过程中运行本代码,setlocal一行还有效吗?如果不能使用setlocal,那么代码应该如何修改?

[ 本帖最后由 crist 于 2011-1-5 15:10 编辑 ]

TOP

  1. @echo off
  2. for /f "tokens=2 delims==" %%a in ('wmic path Win32_SystemEnclosure get ChassisTypes /value') do set a=%%a
  3. set b=0
  4. if %a%=={3} set b=2
  5. REG ADD "HKU\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /d %b% /f
复制代码
1

评分人数

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

TOP

回复 6楼 的帖子

谢谢,在进入系统之后运行能行,我再把这段代码放到xp安装版T12阶段运行看是否成功。

附带问一句,你知道网上那些ghostxp是怎样实现判断计算机类型然后自动开启或关闭数字键的吗?

TOP

回复 6楼 的帖子

在虚拟机测试:
1.在未进入桌面的情况下此批处理的运行结果是:
"InitialKeyboardIndicators"="0x80000000"

2.在进入桌面后运行则能正确修改注册表。
"InitialKeyboardIndicators"="0"
备注:虚拟机的计算机类型返回数值是{1}

这可能是因为
path Win32_SystemEnclosure get ChassisTypes /value
必须要在桌面环境运行吧

不知有什么办法能在安装系统的过程中(例如T13或者T12阶段)判断计算机类型然后打开/关闭数字键?
听说可以通过vbs脚步来实现,但不知应该怎么写代码。

[ 本帖最后由 crist 于 2011-1-6 14:20 编辑 ]

TOP

返回列表