1
短版的提取部分批處理文件:使用特殊字符的字符串
有人可以幫我從這樣的字符串中提取:
HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_18492892&REV_1003\4&2120120&0&0001: Realtek High Definition Audio
只有第二個反斜槓之前部分(\) :
HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_18492892&REV_1003
困難的部分是,數字是不是恆定的,可以是不同的,這同樣適用於串的總長度,唯一不變的是它有2個斜線,我需要第二個斜線之前的部分(第二斜線以及必須移除後的所有內容)
謝謝。
龍版 如果你有興趣
我試圖獲取由另一個應用程序返回一個字符串的一部分:
devcon.exe find "HDAUDIO\FUNC_01"
它返回是這樣的:
HDAUDIO\FUNC_01&VEN_10DE&DEV_0018&SUBSYS_10DE0101&REV_1001\5&13022D22&0&0201: NVIDIA High Definition Audio
HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_18492892&REV_1003\4&2120120&0&0001: Realtek High Definition Audio
HDAUDIO\FUNC_01&VEN_10DE&DEV_0018&SUBSYS_10DE0101&REV_1001\5&13022D22&0&0101: NVIDIA High Definition Audio
3 matching device(s) found.
從th ESE行,我需要捕捉只有一行:
HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_18492892&REV_1003\4&2120120&0&0001: Realtek High Definition Audio
,並從該行,我需要得到的只是這一部分:
HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_18492892&REV_1003
不幸的是這條線可以在不同的系統不同,唯一一致的部分是開頭:
HDAUDIO\FUNC_01&VEN_10EC&DEV_
而且它有兩個斜線。 這意味着唯一可用於加密字符串的鍵是第二個反斜槓 - 第二個「\」之後的任何內容都必須刪除。
到目前爲止,我能得到所需要的整條生產線,但我無法弄清楚如何需要的部分提取出該行:
@echo off
@setlocal enabledelayedexpansion
FOR /F "tokens=* USEBACKQ" %%F IN (`devcon.exe find "HDAUDIO\FUNC_01&VEN_10EC"`) DO (
set string=%%F
set match=!string:HDAUDIO\FUNC_01^&VEN_10EC^&DEV_=!
if not !match!==!string! goto found
)
endlocal
:found
set str="%string%"
set id=!str:~1,-1!
set id=!id:^&=^^^&!
echo %id%
此處作爲一例是檢查的一部分代碼:
set string="HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_18492892&REV_1003\4&2120120&0&0001: Realtek High Definition Audio"
set str=%string%
set id=!str:~1,-1!
set id=!id:^&=^^^&!
echo %id%
謝謝。