正确地将input.txt中的每一行导出到单独的output1.txt、output2.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]_将文本文件中的每行内容分别导出到单独的文本文件 – 使用批处理脚本自动化处理_知途无界](https://zhituwujie.com/wp-content/uploads/2024/05/d2b5ca33bd20240502113821.png)
然而,我们可以进一步优化脚本,避免使用 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

























暂无评论内容