我试图将包含json行的文件转换为json数组。为了实现这一点,我不得不在文件中附加开始和结束方括号(已完成!)。为了完成我只需要在除最后一行之外的每一行的末尾添加一个逗号。我使用以下脚本,但我不知道如何在最后一行停止。
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (input.txt) do (
set /a N+=1
echo ^%%a^, >> output.txt
)
提前感谢您的帮助!
答案 0 :(得分:2)
尝试此操作,如果您的行不符合!
符号,则应该可以使用。
它会生成一个temp.file
。如果您需要删除最后一行文件。您需要使用所需的值更改fileLoc
和endSymbol
的值。
@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%"
答案 1 :(得分:1)
可以使用纯批处理编辑文本文件,但这需要不合理的代码量,特别是如果您希望结果是健壮的。对于大文件来说,它往往很慢。
与我想要批量操作文件内容的大多数问题一样,我会使用JREPL.BAT - a regular expression find and replace utility。
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会限制内存大小。
答案 2 :(得分:1)
@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