如何在.BAT变量中查找包含很长字符串的特定字符串



试图仅隔离.BAT变量中包含的字符串的一部分。

字符串变量!原创包含以下内容:

v2.30|Action=Allow|Active=FALSE|Dir=In|Profile=Domain|Profile=Private|Name=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/PackageDisplayName}|Desc=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/ProductDescription}|LUOwn=S-1-5-21-1502285707-838241421-2811185785-1001|AppPkgId=S-1-15-2-1861897761-1695161497-2927542615-642690995-327840285-2659745135-2630312742|EmbedCtxt=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/PackageDisplayName}|Platform=2:6:2|Platform2=GTEQ|

我正在尝试解析单词">Name="后面的字符序列。

以下For Loop返回:系统找不到v2.30|Action文件。

FOR /F "tokens=* delims=" %%h in (!Original! ^| Findstr "Name=") do (ECHO %%h)

我做错了什么?为什么它只读的前一小部分内容!原创

感谢。。。

试试这个(保存为.bat(:

@if (@X)==(@Y) @end /* JScript comment
@echo off
set "string=v2.30|Action=Allow|Active=FALSE|Dir=In|Profile=Domain|Profile=Private|Name=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/PackageDisplayName}|Desc=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/ProductDescription}|LUOwn=S-1-5-21-1502285707-838241421-2811185785-1001|AppPkgId=S-1-15-2-1861897761-1695161497-2927542615-642690995-327840285-2659745135-2630312742|EmbedCtxt=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/PackageDisplayName}|Platform=2:6:2|Platform2=GTEQ|"
set "splitBy=|"
for /f "tokens=* delims=" %%a in ('cscript //E:JScript //nologo "%~f0"  "%string%" "%splitBy%"') do (
set "%%~a" 2>nul
)
echo %Name%
exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */
var string=WScript.Arguments.Item(0);
var splitBy=WScript.Arguments.Item(1);
var i;
for (i = 0; i < string.split(splitBy).length; i++) {
WScript.Echo(string.split(splitBy)[i]);
}

仅批处理语法的解决方案:

@echo off
setlocal EnableDelayedExpansion
@echo off
REM Creating a Newline variable (the two blank lines are required!)
set NLM=^

set NL=^^^%NLM%%NLM%^%NLM%%NLM%

set "string=v2.30|Action=Allow|Active=FALSE|Dir=In|Profile=Domain|Profile=Private|Name=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/PackageDisplayName}|Desc=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/ProductDescription}|LUOwn=S-1-5-21-1502285707-838241421-2811185785-1001|AppPkgId=S-1-15-2-1861897761-1695161497-2927542615-642690995-327840285-2659745135-2630312742|EmbedCtxt=@{Microsoft.Windows.Cortana_1.13.0.18362_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Cortana/resources/PackageDisplayName}|Platform=2:6:2|Platform2=GTEQ|"
setlocal enableDelayedExpansion
echo !string:^|=%NL%! >#
for /f "tokens=* delims=" %%a in (#) do (
set "%%~a" >nul 2>&1
)
echo %NAME%
del /q #

相关内容

最新更新