无忧启动论坛

标题: cmd下,如何在文本的指定行添加内容 [打印本页]

作者: zedoor    时间: 2011-11-8 23:35
标题: cmd下,如何在文本的指定行添加内容
XP sp3 cmd下,各位大大,如题。比如将123添加到文件1.txt的第二行和倒数第二行,谢谢!

[ 本帖最后由 zedoor 于 2011-11-9 20:09 编辑 ]
作者: dos时代菜鸟    时间: 2011-11-9 07:53
是纯dos下,还是 cmd下?
重新生成一个文件可以么?

我的思路:用awk 可以轻松处理文本流数据。可以通过 printf 函数输出换行和回车符号,可以确定文本总行数并将文本流逐行操作。

[ 本帖最后由 dos时代菜鸟 于 2011-11-9 07:58 编辑 ]
作者: zedoor    时间: 2011-11-9 20:07
原帖由 <i>dos时代菜鸟</i> 于 2011-11-9 07:53 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2334441&ptid=202142" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
是纯dos下,还是 cmd下?<br />
重新生成一个文件可以么?<br />
<br />
我的思路:用awk 可以轻松处理文本流数据。可以通过 printf 函数输出换行和回车符号,可以确定文本总行数并将文本流逐行操作。
<br />

XP sp3环境,cmd下,不要生成新文件,菜鸟望指教。

[ 本帖最后由 zedoor 于 2011-11-9 20:11 编辑 ]
作者: dos时代菜鸟    时间: 2011-11-9 21:48
我说的生成新文件就是:先生成一个符合要求的新文件,然后用这个新文件覆盖旧文件。
对于习惯了鼠标操作的人,建立新文件再覆盖旧文件再删除新文件可能觉得很麻烦,但是在 cmd 下用一句 ren 就可以解决。

另外,如果在 cmd 下进行文件内容操作,我建议还不如用 vbs 更快捷。

[ 本帖最后由 dos时代菜鸟 于 2011-11-9 21:49 编辑 ]
作者: pznpt    时间: 2011-11-9 22:47
不知楼主是不是要在第二行和倒数第二行插入新的一行(内容123)。如果是,下面的代码不妨一试(假设要修改的文件c:\abc.txt):
-----------------------------分割线--------------------------------
@echo off
setlocal ENABLEDELAYEDEXPANSION
set n=0
set aa=0
for /f "delims=" %%a in (c:\abc.txt) do set /a n=!n!+1
for /f "delims=" %%a in (c:\abc.txt) do (
set /a aa=!aa!+1
set /a n=!n!-1
echo %%a >>c:\tmp.txt
if !aa!==1 echo 123 >>c:\tmp.txt
if !n!==1 echo 123 >>c:\tmp.txt
)
del /q c:\abc.txt
ren c:\tmp.txt abc.txt
pause
-----------------------------分割线--------------------------------

如果只是添加123而不是插入新行,方法类似。比如在第二行和倒数第二行开头添加123:
-----------------------------分割线--------------------------------
@echo off
setlocal ENABLEDELAYEDEXPANSION
set n=0
set aa=0
for /f "delims=" %%a in (c:\abc.txt) do (
set /a aa=!aa!+1
if !aa!==2 (echo 123%%a >>c:\tmp.txt) else echo %%a >>c:\tmp.txt
)
for /f "delims=" %%a in (c:\tmp.txt) do set /a n=!n!+1
for /f "delims=" %%a in (c:\tmp.txt) do (
set /a n=!n!-1
if !n!==1 (echo 123%%a >>c:\tmp1.txt) else echo %%a >>c:\tmp1.txt
)
del /q c:\abc.txt
del /q c:\tmp.txt
ren c:\tmp1.txt abc.txt
pause
-----------------------------分割线--------------------------------

[ 本帖最后由 2011pzn 于 2011-11-10 13:48 编辑 ]
作者: pznpt    时间: 2011-11-10 13:53
检查了下,楼上的在第二行和倒数第二行开头添加123有点不妥,重新编辑下。
作者: zedoor    时间: 2011-11-24 22:04
谢谢大家了!!!!!
作者: zedoor    时间: 2011-11-24 22:05
谢谢大家了!!!!!
作者: zedoor    时间: 2011-11-24 22:07
谢谢大家帮忙!!!!!!




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3