|
chishingchan
银牌会员
    
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『楼 主』:
[求助] 如何将命令行输出的某些行赋值于变量?
使用 LLM 解释/回答一下
使用命令行
DEVCON FIND USB\*
显示出如下信息:
USB\ROOT_HUB\4&1A8F66BB&0 : USB Root Hub
USB\ROOT_HUB\4&2D491760&0 : USB Root Hub
USB\ROOT_HUB\4&467FDFE&0 : USB Root Hub
USB\ROOT_HUB\4&7D5B616&0 : USB Root Hub
USB\ROOT_HUB20\4&2556A5A7&0 : USB Root Hub
USB\VID_04A9&PID_106A\408Q9I : USB Printing Support
USB\VID_0A81&PID_0205\5&11CCBFD0&0&2 : USB Composite Device
USB\VID_0A81&PID_0205&MI_00\6&DE85D78&0&0000 : USB USB\VID_0A81&PID_0205&MI_01\6&DE85D78&0&0001 : USB USB\VID_0AC8&PID_307B\5&39E0BBF6&0&2 : USB PC Camera (ZS0211)
USB\VID_1130&PID_F211\5&11CCBFD0&0&1 : USB Composite Device
USB\VID_1130&PID_F211&MI_00\6&2BDBF2D1&0&0000 : USB Audio Device
USB\VID_1130&PID_F211&MI_03\6&2BDBF2D1&0&0003 : USB USB\VID_1130&PID_F211&MI_04\6&2BDBF2D1&0&0004 : USB 14 matching device(s) found.
请问如何提取这两行:
USB\VID_0A81&PID_0205\5&11CCBFD0&0&2 : USB Composite Device
USB\VID_1130&PID_F211\5&11CCBFD0&0&1 : USB Composite Device
然后赋值给变量 A 和 B ?
set A=VID_0A81&PID_0205
set B=VID_1130&PID_F211
请尽量不使用过渡文件,谢谢!
Last edited by chishingchan on 2008-1-17 at 04:52 AM ]
|
|
2008-1-17 04:27 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
|
2008-1-17 13:17 |
|
|
chishingchan
银牌会员
    
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
|
2008-1-17 22:40 |
|
|
dooomer
初级用户
 
积分 109
发帖 52
注册 2006-1-3
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
只有2个变量的话,可以这么办:
DEVCON FIND USB\*>ininin.txt
for /f "tokens=2 delims=\\" %%A in ('type ininin.txt^|findstr Composite') do set B="%%A"
for /f "tokens=2 delims=\\" %%A in ('type ininin.txt^|findstr Composite^|findstr ^/V %B% ') do set A="%%A"
echo %A%
echo %B%
pause
编辑:楼主自行把生成临时文件的重定向给取消吧。这里只是提供一个思路。如果是3个或以上变量,可以依照这个思路再往下写。当然这个办法是比较笨一些了。
Last edited by dooomer on 2008-1-18 at 12:03 PM ]
|
|
2008-1-18 11:57 |
|
|
chishingchan
银牌会员
    
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
Originally posted by dooomer at 2008-1-18 11:57 AM:
只有2个变量的话,可以这么办:
DEVCON FIND USB\*>ininin.txt
for /f "tokens=2 delims=\\" %%A in ('type ininin.txt^|findstr Composite') do set B="%%A"
for /f ...
谢谢!符合题意!
以上代码改成如下:
@echo off
for /f "tokens=2 delims=\\" %%A in ('DEVCON FIND USB\* ^|findstr Composite') do set B="%%A"
for /f "tokens=2 delims=\\" %%A in ('DEVCON FIND USB\* ^|findstr Composite^|findstr ^/V %B%') do set A="%%A"
echo %A%
echo %B%
pause
显示结果:
"VID_0A81&PID_0205"
"VID_1130&PID_F211"
请按任意键继续. . .
请问如何取消变量值的两侧冒号?
|
|
2008-1-18 15:40 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
@echo off
for /f "tokens=1,2 delims=\" %%i in ('devcon find usb\*^|find /i "Composite Device"') do call :xxx "%%i\%%j"
echo "%A%" "%B%"
pause
:xxx
if "%~1"=="" goto:eof
if "%A%"=="" (set "A=%~1") else (set "B=%~1")
goto:eof
|

第一高手 第二高手
我的小站
 |
|
2008-1-18 16:08 |
|
|
dooomer
初级用户
 
积分 109
发帖 52
注册 2006-1-3
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
楼主不用研究我那个笨法子了,楼上高手出手了。我先学习学习。
编辑:楼上能否给讲讲call后面两个参数中间的“\”的作用?不知哪里能找到相关资料呢?
Last edited by dooomer on 2008-1-18 at 04:45 PM ]
|
|
2008-1-18 16:38 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
|
2008-1-18 18:21 |
|
|
dooomer
初级用户
 
积分 109
发帖 52
注册 2006-1-3
状态 离线
|
|
2008-1-19 12:30 |
|
|
chishingchan
银牌会员
    
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
以下代码算是可以了。谢谢以上各位的解答!
@echo off
for /f "tokens=3,5 delims=\_&" %%a in ('DEVCON FIND HID\* ^|FIND "Keyboard"') do set var=%%a%%b
echo %var%
PAUSE
显示结果:
0A810205
请按任意键继续. . .
我的意思是找出USB to PS2 x 2 的代码值回写到某个文件内的(破解BeTwin拖机软件用),请问有没有这样的工具可以写入代码到某个文件内的(CMD环境)?
|
|
2008-1-19 18:36 |
|
|
chishingchan
银牌会员
    
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
找到一个工具是:change
但不知格式如何,因为按照说明例子列出命令行时,还是提示手工输入参数。
|
|
2008-1-21 00:02 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
|
2008-1-21 00:59 |
|
|
chishingchan
银牌会员
    
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第 13 楼』:
使用 LLM 解释/回答一下
其实就是找一个支持16进制代码改写二进制文件的一个能够运行在CMD环境下的命令行工具!
只是个例子:hexc filename.exe "04B48328" "0A810205"
hexc 好像不支持cmd
Last edited by chishingchan on 2008-1-21 at 10:21 PM ]
|
|
2008-1-21 22:16 |
|
|
chishingchan
银牌会员
    
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
|
2008-1-26 11:43 |
|