除了最后一行之外,添加字符到每行的结尾

我试图将包含json行的文件转换成json数组。 为了达到这个目的,我不得不在文件中添加开始和结束方括号(完成!)。 为了完成,我只需要在每行的末尾添加一个逗号(最后一行除外)。 我正在使用下面的脚本,但是我不知道如何在最后一行停下来。

@echo off setLocal EnableDelayedExpansion for /f "tokens=* delims= " %%a in (input.txt) do ( set /a N+=1 echo ^%%a^, >> output.txt ) 

预先感谢您的帮助!

试试这个,如果你的线路不满足,应该可以工作! 符号。 它会产生一个temp.file文件。如果这个文件是你需要删除的最后temp.file 。你需要用你想要的值来改变fileLocendSymbol的值。

 @echo off setlocal enableDelayedExpansion ::-------------------------:: :: Change the values here :: set "fileLoc=testFile.txt" set "endSymbol=," ::-------------------------:: set counter=0 for /f "usebackq tokens=* delims=" %%# in ("%fileLoc%") do ( set /a counter=counter+1 set "line[!counter!]=%%#" ) set /a upToLine=counter-1 break>temp.file for /l %%# in (1;1;!upToLine!) do ( (echo(!line[%%#]!%endSymbol%)>>temp.file ) (echo(!line[%counter%]!)>>temp.file :: Uncoment line bellow if temp.file is ok rem move /y temp.file "%fileLoc%" 
 @echo off setlocal EnableDelayedExpansion set "line=" ( for /F "delims=" %%a in (input.txt) do ( if defined line echo !line!, set "line=%%a" ) echo !line! ) > output.txt 

使用纯批量编辑文本文件是可以完成的,但是它会占用不合理的代码量,特别是如果您希望结果是健壮的。 对于大文件来说,它往往是缓慢的。

与大多数我想要批量操作文件内容的问题一样,我会使用JREPL.BAT – 一个正则表达式查找和替换实用程序 。

JREPL.BAT是纯粹的脚本(混合JScript /批处理),可以从XP以后的任何Windows机器上本机运行。 完整的文档可以通过命令行通过jrepl /? ,或者jrepl /?? 如果你想分页输出。

JREPL功能非常强大,速度也相当快。 但是,您需要了解正则表达式,如果您研究了许多JREPL选项,则可以高效地完成一些非常复杂的事情。

除了最后一行之外,以下每行都会附加一个X.

 jrepl "\r?\n(?=[\s\S])" "X$&" /m /f test.txt /o - 

如果将命令放在批处理脚本中,请使用call jrepl

以上将与任何文本文件一起使用,只要其总长度小于1千兆字节。 此限制源于您必须使用/M选项跨多行搜索的事实。 所以整个文件必须加载到内存中,JScript限制了内存的大小。