找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26960|回复: 7

[系统相关] 批处理能不能判断CapsLock的状态

[复制链接]
发表于 2008-9-29 19:45:26 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-9-26 13:29 编辑

p能不能判断CapsLock的状态:灯亮还是灯灭?
发表于 2008-9-29 20:14:48 | 显示全部楼层
有一个取巧的方法,但必须要在CMD里手动输入运行,而不能双击运行。
 楼主| 发表于 2008-9-29 20:32:40 | 显示全部楼层

回复 2楼 的帖子

别买官司了,是什么巧法?
发表于 2008-9-29 20:54:22 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set "self=%~0"
  3. echo>tmp.x %self:~,1%
  4. fsutil file createnew temp 1 >nul 2>nul
  5. for /f "skip=1 tokens=3" %%a in ('fc /b temp tmp.x') do (
  6.       set/a n=0x%%a
  7.       if !n! geq 65 if !n! leq 90 (
  8.          echo Caps Lock is on
  9.          ) else (
  10.          echo Caps Lock is off
  11.       )
  12.       goto :next
  13. )
  14. :next
  15. del temp,tmp.x
  16. pause
复制代码
输入中文或数字就OVER。

[ 本帖最后由 pusofalse 于 2008-9-29 21:12 编辑 ]
 楼主| 发表于 2008-9-29 21:24:08 | 显示全部楼层

回复 4楼 的帖子

运行之,怎么老是Caps Lock is on
而且,你说的输入中文或数字,是什么时候输入啊,没机会啊
发表于 2008-9-29 21:29:11 | 显示全部楼层
我这里测试正常,如下测试信息:
  1. C:\Documents and Settings\Administrator\桌面>type test.bat
  2. @echo off&setlocal enabledelayedexpansion
  3. set "self=%~0"
  4. echo>tmp.x %self:~,1%
  5. fsutil file createnew temp 1 >nul 2>nul
  6. for /f "skip=1 tokens=3" %%a in ('fc /b temp tmp.x') do (
  7.       set/a n=0x%%a
  8.       if !n! geq 65 if !n! leq 90 (
  9.          echo Caps Lock is on
  10.          ) else (
  11.          echo Caps Lock is off
  12.       )
  13.       goto :next
  14. )
  15. :next
  16. del temp,tmp.x
  17. pause
  18. C:\Documents and Settings\Administrator\桌面>test
  19. Caps Lock is off
  20. 请按任意键继续. . .

  21. C:\Documents and Settings\Administrator\桌面>TEST
  22. Caps Lock is on
  23. 请按任意键继续. . .
复制代码
输入中文或数字就over 是说不能输入中文或数字,只能输入英文。
发表于 2008-9-29 21:46:17 | 显示全部楼层
不用第三方工具的话,用批处理自动判断应该无法做到

=====================================
原来楼主只是为了发送大写字母?
vbs函数UCase
ws.SendKeys UCase("hello")
发表于 2008-9-30 11:53:49 | 显示全部楼层
不用这么复杂吧:
  1. @echo off
  2. set "code=a b c d e f g h i j k l m n o p q r s t u v w x y z"
  3. set /p str=请输入任一字母:
  4. for %%i in (%code%) do if "%str:~,1%" equ "%%i" goto end
  5. echo Caps Lock is on&pause>nul&goto :eof
  6. :end
  7. echo Caps Lock is off
  8. pause>nul
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:13 , Processed in 0.029909 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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