Aquí está mi situación: hago un lote para recuperar una recta numérica de un file.txt, luego de configurar cada línea en una variable. Y después de eso quiero usar la variable diferente, creada dinámicamente, en un command git.
Realmente he avanzado (gracias a este sitio en particular) y cerca del objective final. Imaginemos que mi file.txt se vea así y llame a errorLine.txt:
365 369 389 393 413 417 437 491 515 566 587 610 681 887 964
Y mi script aquí (blame.bat): EDITADO
FINDSTR /R /N "^.*" ..\log_test\errorLine.txt | FIND /C ":" > ..\log_test\numbLine.txt (set /pi=)<..\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
Eso está funcionando, pero ¿hay alguna manera de no tener que establecer para cada línea al final ( set n=1
, set n=2
, …) e incrementar en el enlace del número de línea?
Gracias por adelantado.
Disculpe. La forma de resolver su problema es insert
setlocal EnableDelayedExpansion
al comienzo de su progtwig y luego use esto:
echo '!l%%n!'
Sin embargo, esta es la forma en que haría eso:
@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%!'
Para más detalles, mira esta publicación .
FINDSTR /R /N "^.*" ..\log_test\errorLine.txt | FIND /C ":" > ..\log_test\numbLine.txt (set /pi=)<..\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 /pl%%n=)<..\log_test\line%%n.txt echo '!l%%n!' ) echo "%l15%" cd pause endlocal
Puede ser que esto es lo que estás buscando. Necesitas expansión retrasada y %% n debería ser un lado encerrado con %
Pero no tengo grep y tee instalados, así que no estoy seguro si esto funcionará.