0

我的数字化仪和笔有问题。仅当笔位于屏幕上方 1 厘米时,手掌抑制功能才会检测到笔。

所以我正在尝试制作一个在执行时禁用或启用触摸屏的批处理。

devcon disable "@HID\ELAN0732&COL01\5&242C8B19&1&0000"

devcon enable "@HID\ELAN0732&COL01\5&242C8B19&1&0000"

目前我有 2 个带有上述命令之一的单独批次,它们工作正常。但我希望它在一个带有IF ELSE子句的文件中。

D:
cd D:\Windows Kits\10\Tools\x64
SET /P Test=devcon status "@HID\ELAN0732&COL01\5&242C8B19&1&0000"
IF %Test% EQU 1(
devcon disable "@HID\ELAN0732&COL01\5&242C8B19&1&0000"
)ELSE(
devcon enable "@HID\ELAN0732&COL01\5&242C8B19&1&0000"
)

我试过了,但我不知道如何使用状态返回作为 IF 条件来启用或禁用触摸屏。

C:\WINDOWS\system32>D:

D:\>cd D:\Windows Kits\10\Tools\x64

D:\Windows Kits\10\Tools\x64>SET /P Test=devcon status "@HID\ELAN0732&COL01\5&242C8B19&1&0000"

>>devcon status "@HID\ELAN0732&COL01\5&242C8B19&1&0000"

执行时由 cmd 返回。最后一行没有执行,我仍然可以编辑它并按回车,然后 cmd 关闭。

D:\Windows Kits\10\Tools\x64>devcon status "@HID\ELAN0732&COL01\5&242C8B19&1&0000"
HID\ELAN0732&COL01\5&242C8B19&1&0000
    Name: HID-konformer Touchscreen
    Device is disabled.
1 matching device(s) found.

设备被禁用时的状态

D:\Windows Kits\10\Tools\x64>devcon status "@HID\ELAN0732&COL01\5&242C8B19&1&0000"
HID\ELAN0732&COL01\5&242C8B19&1&0000
    Name: HID-konformer Touchscreen
    Driver is running.
1 matching device(s) found.

启用设备时的状态

4

1 回答 1

0

要将命令的输出放入变量中,请使用for /f循环。过滤您需要的行 ( Device is xxxxx) 并从此行中获取第三个标记(单词):

for /f "tokens=3" %%a in ('devcon status "@HID\ELAN0732&COL01\5&242C8B19&1&0000"^|find "Device is"') do set "status=%%a"
echo status is %status%

您的其余代码不太正确(batch对空格有点挑剔),我将if比较更改为字符串以使其对空%status%变量安全:

IF "%status%" == "running" (
  devcon disable "@HID\ELAN0732&COL01\5&242C8B19&1&0000"
) ELSE (
  devcon enable "@HID\ELAN0732&COL01\5&242C8B19&1&0000"
)
于 2020-11-09T14:05:41.677 回答