批处理:如何使用 "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"
)
我的数字转换器和笔有问题。 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"
)