Как указывалось в предыдущем ответе, вы используете цикл FOR / F для сохранения результатов команды в переменной.
find "search" <file
может быть значительно более эффективным, чем type file | find "search"
, если файл большой.
При выполнении в предложении FOR / F IN () все специальные символы должны заключаться в кавычки или экранироваться.В вашем случае нужно будет экранировать канал, или, если вы воспользуетесь моим предложением, вам нужно будет экранировать <. </p>
echo. >>file
добавит в файл строку с пробелом.Кроме того, безопаснее использовать echo(
вместо echo.
, но вы, вероятно, никогда не столкнетесь с проблемой эха.Чтобы получить пустую строку без пробела, используйте echo(>>file
При использовании SET / A для математических операций вы можете обращаться к переменным напрямую, не заключая их в проценты.Он также работает с процентами.
Наконец, гораздо эффективнее добавлять строки в цикле FOR / L вместо использования цикла GOTO.
@echo off
set /a maxLineas=50
for /f %%N in('find /i /c:"D01" ^<texto.txt') do set /a cantLineasDetalle=%%N
set /a cantLineasAgregar=maxLineas-cantLineasDetalle
for /l %%N in (1 1 %cantLineasAgregar%) do echo(>>texto.txt
Весь сценарий можетсжать до следующего (maxLineas теперь на основе 0)
@echo off
set /a maxLineas=50-1
for /f %%N in('find /i /c:"D01" ^<texto.txt') do for /l %%I in (%%N 1 %maxLineas%) do echo(>>texto.txt