怎么用批处理bat来给文件(txt)内容添加一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用批处理bat来给文件(txt)内容添加一行相关的知识,希望对你有一定的参考价值。

譬如,我有一个fnl_20130818_12_00_c.ctl(类似txt)的文件,对文件的第一行内容用以下命令做了修改:
@echo off
cd/d E:\FN\
set fn=fnl_20130818_12_00_c.ctl
set n=1
set s=aaaaa
(for /f "tokens=1* delims=:" %%i in ('findstr/n .* "%fn%"')do (
if %%i equ %n% (echo/%s%)else echo/%%j
))>temp.yky
move temp.yky "%fn%"
现在还想要在第一行之后添加一行,具体内容为options template
以上问题简化为:
原本内容是 11111
22222
33333
现在已经用命令改为
aaaaa
22222
33333
现在想添加一行,变为
aaaaa
options template
22222
33333
另外,如果不是在第二行添加,而是在中间其它行,譬如第7行添加呢?

@echo off
cd /d %~dp0
rem 设置文本添加行
set line=8
rem 设置文件名称
set file=fnl_20130818_12_00_c.ctl
rem 设置文本添加内容
set nr=options template
setlocal enabledelayedexpansion
set l=1
for /f "delims=" %%a in ('type "%file%"') do (
if !l!==%line% echo %nr%>>"new_%file%"
echo %%~a>>"new_%file%"
set /a l+=1
)
move "new_%file%" "%file%">nul
pause

参考技术A set n=7
set "s=options template"
(for /f "tokens=1* delims=:" %%i in ('findstr/n .* "%fn%"')do (
    echo/%%j
    if %%i equ %n% echo/%s%
))>temp.yky
中间部分改这样

追问

谢谢。但是我想同时能够修改某一行内容,并且添加一行内容。可以整合到一起吗?因为基本不懂批处理,所以能给出完整的命令吗?

追答

合一起,这样

@echo off
cd/d E:\\FN\\
set "fn=fnl_20130818_12_00_c.ctl"
set "n=1"
set "s=aaaaa"
set "h=options template"
(for /f "tokens=1* delims=:" %%i in ('findstr/n .* "%fn%"')do (
    if %%i equ %n% (echo/%s%&echo,%h%)else echo/%%j
))>temp.yky
move temp.yky "%fn%"

追问

大神啊!!弱弱问一句酱紫处理以后,还可以爸第3行修改改为bbbbb吗?

追答if %%i equ %n% (echo/%s%&echo,%h%&echo bbbbb)else echo/%%j

???

本回答被提问者采纳

如何使用bat脚本批处理所有txt文本文件中的每一行开头添加一个指定字符

例如:我现在的当前文件夹下有9个txt文件(图1),我想将每个txt文件中的每一行前面增加指定字符,增加的字符是当前txt文件的文件名; 比如:BJ_BR_STA_DIR.txt这个文件里面是以下内容:(图2)CREATE-DIAM-PROXYDATA1CREATE-DIAM-PROXYDATA2CREATE-DIAM-PROXYDATA3CREATE-DIAM-PROXYDATA4CREATE-DIAM-PROXYDATA5CREATE-DIAM-PROXYDATA6那么我现在想把:BJ_BR_STA_DIR.txt这个文件里面的每一行都是以“BJ_BR_STA_DIR.txt:”为开头的(图3);CD_BR_STA_DIR.txt这个文件里面的每一行都是以“BJ_BR_STA_DIR.txt:”为开头的(图4)求大神帮写个bat脚本,谢谢。

要实现不太难,不建议的话把原文件传给我,这样我不用去花时间写测试样本文件了。

友情提示:不要多次运行此脚本,每运行一次都会在文本每行前加上当前文本名,也就是运行两次会加两次。如果有必要完善,就请继续提问。

@echo off 
::设置文本目录
set "SourDir=D:\\test5"

cd /d %SourDir%
for /f %%a in ('dir /a-d /b /s') do (
IF EXIST TEMP.TXT del TEMP.TXT
for /f %%i  in (%%a) do (
echo %%~nxa:%%i>>TEMP.TXT
)
move temp.txt %%~nxa>nul
)
pause

追答

去网页是上看,代码早已发上去了,手机APP是看不到

参考技术A 用批量替换工具

以上是关于怎么用批处理bat来给文件(txt)内容添加一行的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件怎么打开

如何在 TXT文档内容的 每一行批量加前缀

bat在txt文本指定行的头尾插入内容?

用BAT文件运行CMD命令,怎么编辑??

用BAT文件运行CMD命令,怎么编辑?

如何用批处理命令删除一批文件中的空格字符.