[英]echo a variable inside a variable in batch
这是我的情况:在变量中设置每行后,我进行了批处理以从file.txt恢复一些数字行。 之后,我想在git命令中使用动态创建的其他变量。
我真的进步了(特别是感谢这个站点),并且接近最终目标。 假设我的file.txt看起来像这样,叫做errorLine.txt:
365
369
389
393
413
417
437
491
515
566
587
610
681
887
964
我的脚本在这里(blame.bat):已编辑
FINDSTR /R /N "^.*" ..\log_test\errorLine.txt | FIND /C ":" > ..\log_test\numbLine.txt
(set /p i=)<..\log_test\numbLine.txt
echo %i%
setlocal EnableDelayedExpansion
rem Load the lines of file in "l" array:
set n=0
for /F %%a in (..\log_test\errorLine.txt) do (
set /A n+=1
set "l!n!=%%a"
)
rem Show any line you want, for example:
set n=1
git blame -L !l%n%!,+1 ..\..\core\src\filepath.cpp -e
set n=2
git blame -L !l%n%!,+1 ..\..\core\src\filepath.cpp -e
pause
那是可行的,但是有没有一种方法不必在末尾为每行set n=1
( set n=1
, set n=2
,...)并增加行数的链接?
提前致谢。
FINDSTR /R /N "^.*" ..\log_test\errorLine.txt | FIND /C ":" > ..\log_test\numbLine.txt
(set /p i=)<..\log_test\numbLine.txt
echo %i%
set n=1
setlocal enableDelayedExpansion
for /L %%n in (1,1,%i%) do (
grep -m%%n "[0-9][0-9][0-9]" ..\log_test\errorLine.txt | tail -n1 > ..\log_test\line%%n.txt
(set /p l%%n=)<..\log_test\line%%n.txt
echo '!l%%n!'
)
echo "%l15%"
cd
pause
endlocal
可能正是您要找的。您需要延迟扩展,%% n应该是用%
括起来的一侧。但是我没有安装grep和tee,因此不确定是否可以使用。
劳驾。 解决问题的方法是插入
setlocal EnableDelayedExpansion
在程序开始时,然后使用以下命令:
echo '!l%%n!'
但是,这就是我要这样做的方式:
@echo off
setlocal EnableDelayedExpansion
rem Load the lines of file in "l" array:
set n=0
for /F %%a in (..\log_test\errorLine.txt) do (
set /A n+=1
set "l!n!=%%a"
)
rem Show any line you want, for example:
set n=15
echo '!l%n%!'
有关更多详细信息,请参阅此文章 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.