Windows批处理-查找str并分配给变量



我正试图在文件中找到一个字符串,并将结果分配给一个变量以供进一步处理。但由于某些原因,下面的代码不起作用。

我的字符串总是在第二行可用,所以我尝试了下面的代码,从中我可以在控制台上打印正确的字符串,但不能将其分配给变量:

for /f "tokens=1*delims=:" %%G in ('findstr /n "^" C:myfolderpayload.xml') do if %%G equ 2  echo %%H

问题:使用上述方法,我无法将结果存储在变量中

我也尝试了另一种方法:

findstr /g "FilePath" C:myfolderpayload.xml>>D:Datatmp.txt
set /p "Prev_FileName="<D:Datatmp.txt  
echo %Prev_FileName%

问题:此方法在文件tmp.txt中获得输出,但在变量中没有。在两种情况下均使用SETLOCAL EnableDelayedExpansion

我是初学者,你能帮忙吗?

在任何一个上下文中都不需要采取任何异常步骤来设置变量。你怎么知道变量还没有设置?

您发布的第一个代码并没有试图设置任何内容,但是如果您将echo %%H更改为set "Prev_FileName=%%H",那么它应该只适用于find。

第二个代码应该是设置变量。

为什么你认为你的变量没有被设置?我怀疑你在做类似echo %Prev_FileName%的事情,却没有看到你预期的结果。如果您在一个带括号的命令块中,则可能会发生这种情况,因为它们都是一次解析的,并且%Prev_FileName%在解析时被扩展。您说您是setlocal enableDelayedExpansion,但除非您也更改变量展开的语法,否则这不会有任何作用。您应该使用echo !Prev_FileName!

最新更新