正确地将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
。
然而,我们可以进一步优化脚本,避免使用 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
暂无评论内容