中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]替换文本内第五行双引号内的字符
« [1] [2] »
作者:
标题: [已解决]替换文本内第五行双引号内的字符 上一主题 | 下一主题
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 16 楼』:  Re 15楼

看不懂。又如何使用?

2008-9-9 22:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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


@echo off
setlocal enabledelayedexpansion
set count=0
set /p newname=请输入:
type nul>"test.bak"
for /f "tokens=1,2* delims=:" %%a in ('findstr /n .* "test.rc"') do (
  >>"test.bak" echo.%%b
  set /a count+=1
  if !count! equ 4 goto :next
)
goto :eof
:next
>>"test.bak" echo 578,         "%newname%"
for /f "skip=5 tokens=1,2* delims=:" %%a in ('findstr /n .* "test.rc"') do (
  >>"test.bak" echo.%%b
)
move /y "test.bak" "test.rc"




2008-9-9 22:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 18 楼』:  

有个很奇怪的问题,如果直接回车,只有第一次修改有效,修改几次后,直接回车就不能修改了。用tskill explorer 重启explorer.exe后的第一次直接回车有效,然后直接回车无效。

[ Last edited by tireless on 2008-9-9 at 04:01 AM ]

2008-9-9 23:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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


@echo off
setlocal enabledelayedexpansion
set count=0
set newname=
:begin
set /p newname=请输入:
if "%newname%" equ "" (
  echo 输入不能为空
  goto :begin
)
type nul>"test.bak"
for /f "tokens=1,2* delims=:" %%a in ('findstr /n .* "test.rc"') do (
  >>"test.bak" echo.%%b
  set /a count+=1
  if !count! equ 4 goto :next
)
goto :eof
:next
>>"test.bak" echo 578,         "%newname%"
for /f "skip=5 tokens=1,2* delims=:" %%a in ('findstr /n .* "test.rc"') do (
  >>"test.bak" echo.%%b
)
move /y "test.bak" "test.rc"




2008-9-9 23:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 20 楼』:  

不是的,输入其他的不会出错。

只是直接回车不总是有效(只有第一次修改直接回车能替换成空字符,之后就不能替换成空字符了。直到用 tskill explorer 重启explorer后的第一次又可以替换...)

替换成空的很有用,因为这样开始按钮就会消失:D,所以可否修复这个"BUG"?

[ Last edited by tireless on 2008-9-9 at 04:00 AM ]

2008-9-9 23:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

经测试,17楼的代码不管第几次回车,总是能够正确替换test.rc的内容。
至于你说的“之后就不能替换成空字符了”,能描述一下你是怎样测试的不?



2008-9-9 23:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by HAT at 2008-9-9 03:43 AM:
经测试,17楼的代码不管第几次回车,总是能够正确替换test.rc的内容。
至于你说的“之后就不能替换成空字符了”,能描述一下你是怎样测试的不?

对,没错。

但我是用来替换开始按钮后,就有问题,情况是:
第一次直接回车(替换开始按钮)
第二次随便输入(替换开始按钮)
然后用下面的批处理测试
@echo off
set /p newname=请输入:
echo %newname%
pause

出现的情况是,当我直接回车,%newname%就会变为上次的输入。真是诡异~

[ Last edited by tireless on 2008-9-9 at 04:24 AM ]

2008-9-10 00:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 23 楼』:  

要不我把附件传上来,你测试下,就按照上面说的三步测试

http://clip2net.com/page/m316/316874

[ Last edited by tireless on 2008-9-9 at 04:18 AM ]

2008-9-10 00:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

给17楼的代码加个变量初始化吧
@echo off
setlocal enabledelayedexpansion
set count=0
set newname=
set /p newname=请输入:
type nul>"test.bak"
for /f "tokens=1,2* delims=:" %%a in ('findstr /n .* "test.rc"') do (
  >>"test.bak" echo.%%b
  set /a count+=1
  if !count! equ 4 goto :next
)
goto :eof
:next
>>"test.bak" echo 578,         "%newname%"
for /f "skip=5 tokens=1,2* delims=:" %%a in ('findstr /n .* "test.rc"') do (
  >>"test.bak" echo.%%b
)
move /y "test.bak" "test.rc"


   此帖被 +8 点积分        点击查看详情   
评分人:【 tireless 分数: +8  时间:2008-9-10 01:26




2008-9-10 01:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 25 楼』:  

嗯,可以了,非常感谢!

2008-9-10 01:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: