批处理:如何使用 "devcon status" return 作为 IF 条件?

Batch: How to use "devcon status" return as IF condition?

我的数字转换器和笔有问题。 palmrejection 仅在笔高出屏幕 1 厘米时检测到笔。

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

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

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

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

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

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

C:\WINDOWS\system32>D:

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

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

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

这是 returncmd 在执行时编辑的。最后一行没有执行,我仍然可以编辑它并按回车,然后cmd关闭。

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

设备禁用时的状态

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

设备启用时的状态

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

for /f "tokens=3" %%a in ('devcon status "@HID\ELAN0732&COL01&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&242C8B19&1&0000"
) ELSE (
  devcon enable "@HID\ELAN0732&COL01&242C8B19&1&0000"
)