中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-18 15:19
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]替换文本内第五行双引号内的字符 查看 2,170 回复 24
16 Re 15楼 发表于 2008-09-09 22:09 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
看不懂。又如何使用?
17 发表于 2008-09-09 22:25 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
@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"
18 发表于 2008-09-09 23:16 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
有个很奇怪的问题,如果直接回车,只有第一次修改有效,修改几次后,直接回车就不能修改了。用tskill explorer 重启explorer.exe后的第一次直接回车有效,然后直接回车无效。

[ Last edited by tireless on 2008-9-9 at 04:01 AM ]
19 发表于 2008-09-09 23:22 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
@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"
20 发表于 2008-09-09 23:36 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
不是的,输入其他的不会出错。

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

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

[ Last edited by tireless on 2008-9-9 at 04:00 AM ]
21 发表于 2008-09-09 23:43 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
经测试,17楼的代码不管第几次回车,总是能够正确替换test.rc的内容。
至于你说的“之后就不能替换成空字符了”,能描述一下你是怎样测试的不?
22 发表于 2008-09-10 00:08 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
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 ]
23 发表于 2008-09-10 00:14 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
要不我把附件传上来,你测试下,就按照上面说的三步测试

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

[ Last edited by tireless on 2008-9-9 at 04:18 AM ]
24 发表于 2008-09-10 01:18 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
给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"
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
tireless +8 2008-09-10 01:26
25 发表于 2008-09-10 01:31 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
嗯,可以了,非常感谢!
论坛跳转: