Batch脚本for循环遍历文件时如何去掉最后一项末尾的逗号
解决方案
方案1:缓存上一行内容(推荐,仅需遍历文件1次)
该方案逻辑简单效率高,无需提前统计文件行数,完整脚本如下:
@echo off setlocal enabledelayedexpansion :: 初始化存储上一行内容的变量 set "prev_line=" :: 清空输出文件 type nul > Output.txt for /F "delims=" %%a in (test.txt) do ( :: 上一行不为空时,输出上一行+逗号 if defined prev_line echo !prev_line!,>> Output.txt :: 缓存当前行供下一轮循环使用 set "prev_line=%%a" ) :: 循环结束后输出最后一行,不加逗号 echo !prev_line!>> Output.txt endlocal
说明:代码中添加
delims=是为了避免行内容存在空格时被截断,如果你确认test.txt每行都没有空格可以移除该参数。
方案2:按行号判断处理
如果你需要明确通过行号判断是否为最后一行,可以先统计文件总行数再逐行匹配:
@echo off setlocal enabledelayedexpansion :: 统计文件总行数 for /f %%c in ('type test.txt^|find /c /v ""') do set total_lines=%%c set "line_num=1" type nul > Output.txt for /F "delims=" %%a in (test.txt) do ( if !line_num! lss !total_lines! ( echo %%a,>> Output.txt ) else ( echo %%a>> Output.txt ) set /a line_num+=1 ) endlocal
内容的提问来源于stack exchange,提问作者Alan15000
相关产品推荐
相关产品推荐

