过去几天我坚持我的要求。首先我要解释我的逻辑。我正在计算一个具有某种逻辑的文件的特定行号。然后将其传递给函数:copy_text.in此函数我正在复制data.txt文件输出文件,在file.my问题中添加了一行(作为参数传递的第i行),代码现在工作正常,但需要7分钟才能复制40k记录。如果我将评论函数:line_count ,处理只需30秒,但我无法在输出文件中添加该行。
我无法更改此enabledelayedexpansion和disabledelayedexpansion参数,因为我在从文件打印值时面临很多问题。因为我的文件值包含!和%字符,以及每行的长度超过3000个字符。
Exp:其他信息:来源的74.49%子公司:tps://pro/search/xyz/card/index.html?code =!121212#!121;
只有我的问题在于计算文件行以在该特定行中添加文本no.please建议我如何使用此部分快速运行脚本。
@ECHO Off
echo.%time%
setlocal enabledelayedexpansion
set /a hold_list_line_no=0 (This value will come from different logic)
::>>>>>>>>>>>>>>>>>>>>>>>>
call :copy_text !hold_list_line_no!
endlocal
echo.%time%
pause
exit 0;
:copy_text
setlocal disabledelayedexpansion
set /a line=%~1
FOR /F "delims=" %%c IN (C:\Users\1519499\Desktop\data.txt) DO (
call :line_count
echo %%c>>output.txt
)
:line_count
SET /A i+=1
if %i% equ %line% (
type add_this.txt>>C:\Users\1519499\Desktop\output.txt
)
答案 0 :(得分:0)
试试这个:
@ECHO Off
echo %time%
setlocal enabledelayedexpansion
set /a hold_list_line_no=0 (This value will come from different logic)
::>>>>>>>>>>>>>>>>>>>>>>>>
call :copy_text !hold_list_line_no!
endlocal
echo %time%
pause
exit 0
:copy_text
set /a line=%~1, i=0
(FOR /F "delims=" %%c IN (C:\Users\1519499\Desktop\data.txt) DO (
SET /A i+=1
if !i! equ %line% type add_this.txt
setlocal disabledelayedexpansion
echo %%c
endlocal
)) > output.txt
此方法避免了call
命令和>>
追加重定向,这本身就很慢......您也可以在copy_text循环之前清空环境:
:copy_text
setlocal enabledelayedexpansion
for /F "delims==" %%a in ('set') do set "%%a="