![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 13:31 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请问下关于set延迟变量的 |
| 可打印版本 6,977 / 25 |
| 第1楼 xue2ye | 发表于 2006-11-13 08:53 |
| 初级用户 发帖 11 积分 26 | |
|
请问下关于set延迟变量的 不好意思 ,也许是我太笨了,我看遍了论坛里关于这方面的 还是没懂。
@echo off echo 去掉引号: call :replace 1.txt " echo. echo 替换字符: call :replace 1.txt "谢谢您" "感谢您" pause>nul goto :eof :replace setlocal ENABLEDELAYEDEXPANSION for /f "tokens=1* delims=" %%i in (%1) do set var=%%i & echo !var:%2=%3! endlocal goto :eo 象这个批处理,我怎么都弄不明白什么意思。。尤其是for /f "tokens=1* delims=" %%i in (%1) do set var=%%i & echo !var:%2=%3! 里!var:%2=%3! 这句话的意思。。其他一关于 ! 的问题我就看不懂。哪位给我指点一下呀。结合上面那个例子讲最好了。set 命令 我看 自带的帮助都那个 一元运算符不知道是什么意思。。。谢谢啊。。 |
|
| 第2楼 lxmxn | 发表于 2006-11-13 09:31 |
| 版主 发帖 4,938 积分 11,386 | |
|
在论坛里搜索一下吧。关键字:"变量延迟"。 |
|
| 第3楼 xue2ye | 发表于 2006-11-13 09:49 |
| 初级用户 发帖 11 积分 26 | |
|
搜过了就是看不懂。。不好意思哈。笨了点。
|
|
| 第4楼 lxmxn | 发表于 2006-11-13 10:16 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re xue2ye: 简单的给你讲一下吧: 因为命令解释器(%comspec%)在执行for命令时,首先将for命令里的变量扩展为变量的值,所以,当我们执行时,有的变量是根据for命令得到的,这样,变量还没有被定义就被命令解释器给解释(扩展)了,显然是得不到我们想要的,如果要for命令执行之后再扩展变量的值,那么就要启用变量延迟功能来达到这个目的。要启用变量延迟功能,必须在for命令之前首先定义它,用"setlocal ENABLEDELAYEDEXPANSION"就可以开启变量延迟功能。当再次引用变量时,就要用两个"!"将变量包含起来(比如"!var!"),以扩展变量的为其值。 时间关系,讲解得不是很详细,你可以在论坛里面搜索更多的关于变量延迟的详细说明的。 |
|
| 第5楼 xue2ye | 发表于 2006-11-13 11:33 |
| 初级用户 发帖 11 积分 26 | |
|
for /f "tokens=1* delims=" %%i in (%1) do set var=%%i & echo !var:%2=%3!
主要是这句不懂。这句能解释下吗 他这个 !var:“感谢您”=“谢谢您”! 实在想不出来 |
|
| 第6楼 lxmxn | 发表于 2006-11-13 11:43 |
| 版主 发帖 4,938 积分 11,386 | |
|
!var:“感谢您”=“谢谢您”!——讲变量var里面所有的"感谢您"换成"谢谢您"! |
|
| 第7楼 xue2ye | 发表于 2006-11-15 06:46 |
| 初级用户 发帖 11 积分 26 | |
|
不好意思,还是没理解。。为什么要用感谢您和谢谢您呢。我换了别的好象就不行了。我看了论坛里大部分关于set的 好象都是只讲了原理,没讲具体用法。能讲讲吗。
|
|
| 第8楼 ccwan | 发表于 2006-11-15 07:06 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
有些东西确实很抽象,不举个例子大多数人是不明白的。请各位版主、高手在解答问题时尽量加入一些例子,便于理解。谢谢
|
|
| 第9楼 redtek | 发表于 2006-11-15 07:42 | ||||||
| 金牌会员 发帖 1,147 积分 2,902 | |||||||
|
这里有一个关于SET的详细应用实例和一些相关的基础内容的资料~:) 你需要的例子里面全有,请从头到尾照着里面的代码全做一遍~:) [简单索引]关于SET变量、延时变量、各种符号的用法…… 第10楼 xue2ye |
发表于 2006-11-15 07:49 |
初级用户 发帖 11 积分 26
|
|
我就是看不懂啊。跟着做会自己做就不会了。。你给我举个简单的例子哇。。。谢谢啊
| |||
| 第11楼 3742668 | 发表于 2006-11-15 07:51 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
从代码格式上看似乎是我写的,不过现在看来代码实在是很不成熟的。
至于"为什么要用感谢您和谢谢您",那就要结合 1.txt 的内容来看了,因为参数%1是1.txt。 建议初学者不要把参数与变量混在一起研究,先一句句set地弄明白了再结合其它的。 |
|
| 第12楼 xue2ye | 发表于 2006-11-15 08:33 |
| 初级用户 发帖 11 积分 26 | |
|
set str=%%str:www=bbs%%这句什么意思??
|
|
| 第13楼 zh159 | 发表于 2006-11-15 09:47 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by xue2ye at 2006-11-14 20:33: 这句是显示给你看的,要显示一个%,得%%才行 执行“echo set str=%%str:www=bbs%%”后显示为:set str=%str:www=bbs% 将“www.cn-dos.net”指派给变量“str”,再用%str:www=bbs%将“www.cn-dos.net”里的“www”替换为“bbs” |
|
| 第14楼 dshh98 | 发表于 2006-11-15 13:09 |
| 新手上路 发帖 2 积分 3 | |
|
偶也还没看懂``` 555555555
|
|
| 第15楼 ccwan | 发表于 2006-11-15 21:23 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
学习不要求新奇,要从基本的东西开始。建议dshh98先把dos基本命令仔细看看,多多实践,再探讨高深的东西。
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |