我正试图在文件中找到一个字符串,并将结果分配给一个变量以供进一步处理。但由于某些原因,下面的代码不起作用。
我的字符串总是在第二行可用,所以我尝试了下面的代码,从中我可以在控制台上打印正确的字符串,但不能将其分配给变量:
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!
。