Windows Batch (.bat) files cannot natively control or check the status of or Num Lock because the CMD language lacks built-in commands for hardware state . To achieve this, a batch file must "spawn" a script using PowerShell or VBScript . Toggling via PowerShell (Recommended)
To force a key to be "ON" only if it is currently "OFF," use PowerShell to check the status first. Batch File Caps Lock Num Lock
powershell.exe -Command "IF ([console]::CapsLock -eq 'False') { ... }" Super User Windows Batch (
powershell.exe -Command "$wsh = New-Object -ComObject WScript.Shell; $wsh.SendKeys('{CAPSLOCK}')" Batch File Caps Lock Num Lock
Can I turn Caps on/of from a batch file in Win 7? - Super User
You can call a one-line PowerShell command from within your batch file to toggle or force a specific state.