标题: [其他] 批处理for语句怎样替换变量内容? [打印本页]
作者: wolf 时间: 2007-11-13 11:02 标题: 批处理for语句怎样替换变量内容?
1.txt文档内容为
net user abc123456789 123456 /add
我想把abc123456789换为123456789
利用下面的代码- @echo off
- for /f "tokens=1,2,3* delims= " %%i in (1.txt) do set var=%%k
- set var=%var:~-9%
- set %%k=var
- echo %var%
- echo %%k
- pause
复制代码
为什么%%k显示的是%k
难道不能对%k赋值了吗?
作者: youxi01 时间: 2007-11-13 11:31
测试代码:- @echo off &setlocal enabledelayedexpansion
- for /f "tokens=1,2,3,*" %%a in (1.txt) do (
- set var=%%c
- set var=!var:~3!
- echo !var!
- )
- pause
复制代码
作者: wolf 时间: 2007-11-13 12:12
先谢谢版主
对于版主的代码
我又点疑问
就是为什么你要用var=!var:~3!
不是利用 var=%var:~-9%
还有这里利用setlocal enabledelayedexpansion
好像没有什么作用(但是测试结果说明不能少)
我吧版主代码换为- @echo off
- for /f "tokens=1,2,3,*" %%a in (1.txt) do (
- set var=%%c
- set var=%var:~-9%
- echo %var%
- )
- pause
复制代码
为什么显示echo处于关闭状态
还有我本想知道的是为什么那个%%k不能正确显示?
作者: youxi01 时间: 2007-11-13 13:49
1、这里setlocal enabledelayedexpansion的作用就是告诉 批处理 起用了延迟变量,让批处理 实时 掌握变量的变化;
2、就是为什么你要用var=!var:~3!
不是利用 var=%var:~-9%
一样的道理,在这个地方,两种方法都可以。
作者: novaa 时间: 2007-11-13 18:30
我以前看过一个帖子说%%i在FOR后会变为%i之类的?
对这个不是很清楚
作者: novaa 时间: 2007-11-15 12:46
懂了
for 语句后面的变量只能用FOR对他赋值
呵呵
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |