[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理for语句怎样替换变量内容?

1.txt文档内容为
net user abc123456789 123456 /add
我想把abc123456789换为123456789
利用下面的代码
  1. @echo off
  2. for /f "tokens=1,2,3* delims= " %%i in (1.txt) do set var=%%k
  3. set var=%var:~-9%
  4. set %%k=var
  5. echo %var%
  6. echo %%k
  7. pause
复制代码

为什么%%k显示的是%k
难道不能对%k赋值了吗?

测试代码:
  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "tokens=1,2,3,*" %%a in (1.txt) do (
  3.    set var=%%c
  4.    set var=!var:~3!
  5.    echo !var!
  6.   )
  7. pause
复制代码

TOP

先谢谢版主
对于版主的代码
我又点疑问
就是为什么你要用var=!var:~3!
不是利用 var=%var:~-9%
还有这里利用setlocal enabledelayedexpansion
好像没有什么作用(但是测试结果说明不能少)
我吧版主代码换为
  1. @echo off
  2. for /f "tokens=1,2,3,*" %%a in (1.txt) do (
  3.    set var=%%c
  4.    set var=%var:~-9%
  5.    echo %var%
  6.   )
  7. pause
复制代码
为什么显示echo处于关闭状态
还有我本想知道的是为什么那个%%k不能正确显示?

TOP

1、这里setlocal enabledelayedexpansion的作用就是告诉 批处理 起用了延迟变量,让批处理 实时 掌握变量的变化;
2、就是为什么你要用var=!var:~3!
   不是利用 var=%var:~-9%
一样的道理,在这个地方,两种方法都可以。

TOP

我以前看过一个帖子说%%i在FOR后会变为%i之类的?
对这个不是很清楚
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

懂了
for  语句后面的变量只能用FOR对他赋值
呵呵
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

返回列表