中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-07 14:42
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 对文件操作 shell脚本该怎么写:替换文件的最后一行 查看 1,013 回复 6
楼 主 对文件操作 shell脚本该怎么写:替换文件的最后一行 发表于 2008-02-29 13:12 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 110
发帖 44
注册 2007-11-01 21:56
18年会员
UID 101435
性别 男
状态 离线
我想替换文件的最后一行,如何写?

───────────────── 版务记录 ─────────────────
执行:HAT
操作:在帖子标题中增加搜索关键字
说明:原标题"如果我想对文件操作 shell脚本该怎么写"不利于论坛搜索
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-9-27 at 11:49 ]
2 发表于 2008-02-29 15:00 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
set SrcFile=C:\test\old.txt
set DstFile=C:\test\new.txt

type nul>"%DstFile%"
for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%SrcFile%"') do set var=%%a
set /a var-=1
set row=0
setlocal enabledelayedexpansion
for /f "tokens=1* delims=" %%a in ('findstr .* "%SrcFile%"') do (
if !row! lss %var% (
>>"%DstFile%" echo %%a
)
set /a row+=1
)
>>"%DstFile%" echo 这是一个笨办法
3 发表于 2008-02-29 15:09 ·  中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
应该是
var+=1
吧!
4 发表于 2008-02-29 15:26 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
楼上可以自己测一下到底是+还是-
呵呵
5 发表于 2008-02-29 22:20 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
sed "$s/.*/the end/" urfile|more > newfile
6 发表于 2008-02-29 23:07 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
@echo off
set File1=C:\old.txt
set File2=C:\new.txt
for /f "tokens=*" %%i in (%File1%) do set var=%%i
findstr /ivc:"%var%" %File1%>"%File2%"
>>"%File2%" echo 另一个笨办法
简单!简单!再简单!
7 发表于 2008-03-01 10:58 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
set SrcFile=C:\test 1\old.txt
set DstFile=C:\test 1\new.txt

for /f "usebackq tokens=*" %%a in ("%SrcFile%") do set last=%%a
>"%DstFile%" findstr /ivc:"%last%" "%SrcFile%"
>>"%DstFile%" echo 加上双引号防止路径中有空格
论坛跳转: