2015-02-10 50 views
1

这是我的场景:在一个变量中设置每行之后,我会批量恢复file.txt中的某个数字行。之后我想在git命令中使用动态创建的不同变量。在变量中回显一个变量中的变量

我真的很进步(特别感谢这个网站)并接近最终目标。让我们想象一下我的file.txt的这个样子的,并呼吁errorLine.txt:

365 
369 
389 
393 
413 
417 
437 
491 
515 
566 
587 
610 
681 
887 
964 

而且我脚本这里(blame.bat): EDITED

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=2,...)并在行数的链接中增加?

在此先感谢。

回答

1

不好意思。为您解决问题的方法是插入

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%!' 

有关更多详细信息,请参阅this post

+0

是的。这很容易,但我提议遵循OP代码。 – npocmaka 2015-02-10 15:51:53

+0

好的,我会尝试,因为当我使用'git blame -L!l %% n!,+ 1 .. \ .. \ core \ src \ filepath.cpp -e'时会失败,不会显示号码行... :( – Algorys 2015-02-10 15:52:53

+0

@Aacini我更新我的帖子,如果你可以继续帮助我吗? – Algorys 2015-02-10 16:20:46

1
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 

可能这是你找什么for.You需要延迟扩展和%% n应是一个封闭的一侧与%。但我没有grep和三通安装所以不知道这是否会工作。

+0

感谢您的提示,但我正在寻找显示'l15'(或另一个)的值...而这里它只显示'15'。我认为你的解决方案并不是迄今为止...... – Algorys 2015-02-10 15:23:34

+0

@mestra - “line15.txt”的内容是什么? – npocmaka 2015-02-10 15:35:39

+0

line15.txt的内容是964(实际上就是l15),line14.txt是887(如l14)等等...... – Algorys 2015-02-10 15:37:22