将文本文件中的每行内容分别导出到单独的文本文件 – 使用批处理脚本自动化处理

正确地将input.txt中的每一行导出到单独的output1.txtoutput2.txt等文件中:

@echo off  
setlocal enabledelayedexpansion  
  
set "INPUT_FILE=input.txt"  
set "OUTPUT_PREFIX=output"  
set "LINE_NUMBER=1"  
  
for /f "delims=" %%A in ('type "%INPUT_FILE%"') do (  
    set "LINE=%%A"  
    echo !LINE! > "!OUTPUT_PREFIX!!LINE_NUMBER!.txt"  
    set /a "LINE_NUMBER+=1"  
)  
  
endlocal

但是,set /a 不是正确的语法。在批处理中,算术扩展应该使用 set /A(注意大小写敏感),但是在这个上下文中,我们其实不需要算术扩展,因为 LINE_NUMBER 是在 for 循环中通过变量扩展来递增的。但是,由于我们是在一个块(由括号 ( 和 ) 包围的代码)内部使用延迟变量扩展,我们需要使用 ! 而不是 % 来引用变量 LINE_NUMBER

图片[1]_将文本文件中的每行内容分别导出到单独的文本文件 – 使用批处理脚本自动化处理_知途无界

然而,我们可以进一步优化脚本,避免使用 call 和延迟变量扩展来递增 LINE_NUMBER,因为 for 循环自身就可以处理这个问题。下面是最终版本的脚本:

@echo off  
setlocal  
  
set "INPUT_FILE=input.txt"  
set "OUTPUT_PREFIX=output"  
set "COUNTER=1"  
  
for /f "delims=" %%A in ('type "%INPUT_FILE%"') do (  
    echo %%A > "%OUTPUT_PREFIX%!COUNTER!.txt"  
    set /a COUNTER+=1  
)  
  
endlocal

请注意,我已经将 enabledelayedexpansion 注释掉了,因为我们不再需要它。现在,我们使用 !COUNTER! 在 for 循环中,但这只是因为 %%A 是当前行的内容,而 COUNTER 是我们手动递增的计数器。

确保将上述代码保存为 .bat 文件,并在与 input.txt 相同的目录中运行它,或者修改 INPUT_FILE 变量的值以指向正确的文件路径。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞12 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容