标题: [文件操作] 批处理命令set中的字符截取、替换不能直接用于for中的变量吗? [打印本页]
作者: saint_Zuo 时间: 2011-12-26 11:29 标题: 批处理命令set中的字符截取、替换不能直接用于for中的变量吗?
- setlocal enabledelayedexpansion
- for /r %%i in (*.txt) do set var=!%%~ni:~0,2! & echo !var!
- for /r %%i in (*.txt) do set var=%%~ni &set var=!var:~0,2!& echo !var!
复制代码
(1)请教第一个for /r语句中为什么不能用一句set来截取%%~ni中的前两个字符呢?改为var=%%%~ni:~0,2%也不对,会报错,改为var=%%~ni:~0,2还是不对。也就是说set语句中的字符截取、替换不能直接用于for中的%%i、%%~ni等变量吗?
(2)启动了变量延迟之后为什么不需要将%%i改为!!i呢?
作者: hacker85 时间: 2011-12-26 12:11
这个还真不会,帮顶吧。
作者: awk 时间: 2011-12-26 12:12
1、字符串截取不能直接用于for的变量
2、for的变量本身就具备变量延迟
作者: lovedjsn 时间: 2011-12-26 14:37
set var=%%i
set /a var==!var:~0,2!
这样不就行了?????
作者: lxzzr 时间: 2011-12-27 12:14
回复 4# lovedjsn
你在哪里看到set这样的用法:set /a var==!var:~0,2!
作者: saint_Zuo 时间: 2011-12-28 11:10
回复 4# lovedjsn
我的意思是只需一句set就能完成对%%~ni的字符截取,麻烦再帮忙看看。
作者: awk 时间: 2011-12-28 15:37
回复 6# saint_Zuo
你可以建议微软把这个功能加到下一个版本的系统里面,在这前之前还是老实写两行吧。
作者: saint_Zuo 时间: 2011-12-28 15:44
回复 7# awk
谢谢了。终于有了明确的答案!
作者: awk 时间: 2011-12-28 15:45
回复 8# saint_Zuo
其实吧,3楼第一句话已经非常明确了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |