中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-15 11:57
47,813 主题排行 / 349,903 发帖 / 今日 1 篇 / 48,257 会员排行
DOS疑难解答 & 问题讨论 (解答室) » 替换字符串递增变量
可打印版本  1,480 / 7
第1楼 flyingphf 发表于 2008-06-02 17:12
中级用户 发帖 142 积分 392
替换字符串递增变量
文件里内容如下
ccc 1aa bbb
ccc 1aa bbb
ccc 1aa bbb
ccc 1aa bbb
ccc 1aa bbb

我如何替换变量1aa得到结果为
ccc 1aa bbb
ccc 2aa bbb
ccc 3aa bbb
ccc 4aa bbb
ccc 5aa bbb
谢谢
第2楼 lxmxn 发表于 2008-06-20 03:16
版主 发帖 4,938 积分 11,386


[ Last edited by lxmxn on 2008-6-23 at 10:31 PM ]
第3楼 komafd2 发表于 2008-06-21 16:55
初级用户 发帖 20 积分 53
lxmxn兄的代码是不是写欠了,改了一下

@echo off & SetLocal EnableDelayedExpansion

for /f "tokens=1,2,*" %%a in (1.txt) do (
set /a n=!n!+1
echo %%a !n!aa %%c>>2.txt
)
start notepad 2.txt
第4楼 lxmxn 发表于 2008-06-23 22:32
版主 发帖 4,938 积分 11,386
Originally posted by komafd2 at 2008-6-21 16:55:
lxmxn兄的代码是不是写欠了,改了一下

@echo off & SetLocal EnableDelayedExpansion

for /f "tokens=1,2,*" %%a in (1.txt) do (
set /a n=!n!+1
echo %%a !n!aa %%c>& ...

嗯,的确写掉了一个语句,已经改正过来了,多谢提醒…… ^_^
第5楼 qzwqzw 发表于 2008-06-25 22:00
银牌会员 发帖 636 积分 2,343
虽然在DOS论坛
但也不一定局限在DOS的方法
类似的问题
我一定会用excel
而非批处理
因为同类问题我通常只会遇到一次
我不会辛苦为此专门编一段代码的

当然dos下也是有第三方的命令行工具可以直接实现楼主的目的
比如最经典的sed
第6楼 plp626 发表于 2008-06-28 21:25
银牌会员 发帖 1,020 积分 2,278
若用批处理,sed就不必了,内部命令足矣。
很想学习sed,但感觉还是前学后忘,
第7楼 lxmxn 发表于 2008-06-29 03:42
版主 发帖 4,938 积分 11,386
Originally posted by plp626 at 2008-6-28 21:25:
若用批处理,sed就不必了,内部命令足矣。
很想学习sed,但感觉还是前学后忘,

多练习,时间长了自然就会了,我感觉学习sed最关键的是理解 pattern space 和 hold buffer 的作用和关系。另外,regex 也应该要熟练。

[ Last edited by lxmxn on 2008-6-29 at 03:43 AM ]
第8楼 isreal 发表于 2009-11-18 17:29
新手上路 发帖 3 积分 4
谁知道%%与!!运算符的区别
问大家一个问题
@echo off & SetLocal EnableDelayedExpansion
for /f "tokens=1,2,*" %%a in (1.txt) do (
set /a n=!n!+1
echo %%a %n%aa %%c>>2.txt
这个地方原来的!n!我改成了%n%为什么就出错呢?
)
start notepad 2.txt
我真的不知道是什么原因,%n%不是引用变量n吗?
!n!这个也是引用变量n吗?
请高手解答
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023