Board logo

标题: 替换字符串递增变量 [打印本页]

作者: flyingphf     时间: 2008-6-2 17:12    标题: 替换字符串递增变量

文件里内容如下
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
谢谢
作者: lxmxn     时间: 2008-6-20 03:16

@echo off & SetLocal EnableDelayedExpansion
set /a n=1

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

start notepad newfile
[ Last edited by lxmxn on 2008-6-23 at 10:31 PM ]
作者: komafd2     时间: 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>>2.txt
)
start notepad 2.txt
作者: lxmxn     时间: 2008-6-23 22:32


  Quote:
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>& ...

嗯,的确写掉了一个语句,已经改正过来了,多谢提醒…… ^_^
作者: qzwqzw     时间: 2008-6-25 22:00
虽然在DOS论坛
但也不一定局限在DOS的方法
类似的问题
我一定会用excel
而非批处理
因为同类问题我通常只会遇到一次
我不会辛苦为此专门编一段代码的

当然dos下也是有第三方的命令行工具可以直接实现楼主的目的
比如最经典的sed
作者: plp626     时间: 2008-6-28 21:25
若用批处理,sed就不必了,内部命令足矣。
很想学习sed,但感觉还是前学后忘,
作者: lxmxn     时间: 2008-6-29 03:42


  Quote:
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 ]
作者: isreal     时间: 2009-11-18 17:29    标题: 谁知道%%与!!运算符的区别

问大家一个问题
@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吗?
请高手解答