批量封锁 - 替代品

Lui*_*han 2 vbscript batch-file batch-processing

我想知道我是否可以使用下面相同的代码并进行一些小的更改来添加我需要的功能.它的写法:

::::Set WshShell = CreateObject("WScript.Shell")
::::WshShell.SendKeys "{capslock}"
Set WshShell = Nothing
findstr "^::::" "%~sf0" > temp.vbs & Cscript //nologo temp.vbs & del temp.vbs
echo Capslock is off
Run Code Online (Sandbox Code Playgroud)

结果:

  • 如果已经关闭,它会激活CAPS ON
  • 如果CAPS已经打开,它会激活CAPS OFF

我想把它改成总是OFF.如何在代码中进行这种轻微修正?

谢谢

Rea*_*wTo 5

此VBS使用Word.Application来查询CAPS状态.如果CAPS为ON,则我们将其关闭.

Set objShell = CreateObject("WScript.Shell")
Set objWord = CreateObject( "Word.Application" )

if objWord.CapsLock <> 0 then
   ' turn capslock off
   objShell.SendKeys "{capslock}" 
end if
objWord.Quit
Run Code Online (Sandbox Code Playgroud)

为了将所有内容保存在一个批处理文件中,我们生成一个临时.vbs文件,执行并删除它以确保CAPS为OFF.

set BAT_HOME=%~dp0
echo %BAT_HOME%
cd %BAT_HOME%
echo Set objShell = CreateObject("WScript.Shell") > temp.vbs
echo Set objWord = CreateObject( "Word.Application" ) >> temp.vbs
echo if objWord.CapsLock ^<^> 0 then >> temp.vbs
echo objShell.SendKeys "{capslock}" >> temp.vbs
echo end if >> temp.vbs 
echo objWord.Quit >> temp.vbs
cscript //nologo temp.vbs
del temp.vbs
echo ... do your thing in the batch file
Run Code Online (Sandbox Code Playgroud)