中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 修改文本中的特定行,其他行原样不修改,怎么写?
作者:
标题: 修改文本中的特定行,其他行原样不修改,怎么写? 上一主题 | 下一主题
chenai79921
初级用户





积分 120
发帖 48
注册 2007-12-1
状态 离线
『楼 主』:  修改文本中的特定行,其他行原样不修改,怎么写?


─────────────────── 版务记录 ────────────────────
执行:lxmxn
标题:求助,请大家帮我,我也想学习下。
说明:因标题表述过于模糊,不便于论坛的搜索和管理,请在三日内修改标题,否则扣除2点积分
参考:http://www.cn-dos.net/forum/viewthread.php?tid=7326&fpage=1
   http://www.cn-dos.net/forum/viewthread.php?tid=1415
─────────────────── 版务记录 ────────────────────


现有文件 11.txt内容如下

ccc=2
cti=0
css=1

我想修改成这个样子,(如下)

ccc=2
cti=1
css=0

我想直接修改11.txt,不要把修改完的内容,导入到一个新建的文本文件中,请问如何写批处理命令。

谢谢。。。。

[ Last edited by chenai79921 on 2007-12-2 at 10:45 AM ]

2007-12-1 19:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenai79921
初级用户





积分 120
发帖 48
注册 2007-12-1
状态 离线
『第 2 楼』:  

就是把0 修改 成1,,,1修改成0,,

不想用echo,文件很长还有其他的内容。

2007-12-1 19:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenai79921
初级用户





积分 120
发帖 48
注册 2007-12-1
状态 离线
『第 3 楼』:  

自问自答了
@echo off
for /f "tokens=1,2 delims==" %%a in (11.txt) do  (
if "%%a"=="cis" (set /p=%%a=<nul&set /a p=1&call set /p"=%%p%%"<nul&echo.)
if "%%a"=="cit" (set /p=%%a=<nul&set /a p=0&call set /p"=%%p%%"<nul&echo.)
)>> result.txt

move result.txt 11.txt

那个ccc怎么弄啊??谁来帮帮我啊。。。if 里面好像不能有else的!!

[ Last edited by chenai79921 on 2007-12-1 at 09:58 PM ]

2007-12-1 21:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenai79921
初级用户





积分 120
发帖 48
注册 2007-12-1
状态 离线
『第 4 楼』:  

其他有许多的文件名。。其他的保持原样怎么写,,

2007-12-1 21:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

//那个ccc怎么弄啊??谁来帮帮我啊。。。if 里面好像不能有else的!!

加括号就行了
if %a% equ %b% (
  echo yes
) else (
  echo no
)



2007-12-2 01:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chenai79921
初级用户





积分 120
发帖 48
注册 2007-12-1
状态 离线
『第 6 楼』:  

不行啊,,if else 好像只能在IF exist filename -- 的时候用,,,
IF string1==string2 -- 用不了else,,,,,,,

现在就算能用else 也解决不了问题.......

2007-12-2 10:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 7 楼』:  

到底是cti、css,还是cis、cit???

if string1==string2 (command1) else (command2)

如果只按原帖说的1变0,0变1:
@echo off
for /f "tokens=1,2 delims==" %%a in (11.txt) do  (
  if "%%a" == "ccc" (
    >>temp.txt echo.%%a=%%b
  ) else (
    set/a str=%%b^^1
    >>temp.txt call echo.%%a=%%str%%
  )
)
exit




2007-12-2 11:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:  

@echo off
    for /f "tokens=1* delims=:" %%a in ('findstr /n .* "11.txt"') do (
    set list=%%b
    setlocal enabledelayedexpansion
if "!list: =!"=="cti=0" set list=cti=1
if "!list: =!"=="css=1" set list=css=0
echo/!list! >>result.txt
endlocal
)
move /y "result.txt" "11.txt " 2>NUL
pause



简单!简单!再简单!
2007-12-2 17:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenai79921
初级用户





积分 120
发帖 48
注册 2007-12-1
状态 离线
『第 9 楼』:  

谢谢terse zh159 和HAT ,,
terse 的代码是我想要的,,谢谢!!

我想学学BAT 有啥好的教程吗?网上pdf或者书?

[ Last edited by chenai79921 on 2007-12-3 at 07:52 PM ]

2007-12-3 19:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: