使用批处理文件将字符串添加到.txt文件

时间:2018-09-12 15:13:47

标签: batch-file

我有一个包含如下记录的文件:

Aaron,Daniel,,,AARDA,MEDICAL,10,HEH

我需要一个批处理文件,该文件可以查找正确的逗号并插入引号,并在文件末尾添加逗号。

我有这个批处理文件,可以成功将引号添加到每行的开头:

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

我需要的是输出看起来像这样:

"Aaron,Daniel,,",AARDA,MEDICAL,10,HEH,

2 个答案:

答案 0 :(得分:2)

从您对问题的评论中了解到,连续3个逗号在每行中仅出现一次。为此,解决方案非常简单:

@echo off 
setlocal DisableDelayedExpansion
(
    for /F "usebackq tokens=*" %%A in ("input.txt") do (
        set "Line=%%A"
        setlocal EnableDelayedExpansion
        echo "!Line:,,,=,,",!,
        endlocal
    )
)>"output.txt"

它最初从延迟扩展开始,并在循环的每次迭代中启用延迟扩展,以防止破坏包含!字符的行。

由于,,,在每一行中只出现一次(据我所知),因此可以安全地用,,",代替

tokens=*仅在您想从每一行中删除可能的前导空格时才需要,否则,您可以使用“ delims =”将整个行读入单个标记中。

答案 1 :(得分:1)

如果感兴趣的是替代方法。

带有示例文件test.txt:

Aaron,Daniel,,,AARDA,MEDICAL,10,HEH
Bob,Edward,,,AARDA,MEDICAL,10,HEH

使用sed,将第四个逗号替换为",,并在开头(")和末尾(^的{​​{1}}处添加,

$

返回:

sed 's/,/",/4' test.txt | sed 's/^/"/' | sed 's/$/,/'