批处理set中%的用法

经常看到这样的用法callset"str=%%str:%char1%=%char2%%%",最外层怎么需要两对百分号,不是因该set%PATH:str1=str2%么?... 经常看到这样的用法call set "str=%%str:%char1%=%char2%%%" ,最外层怎么需要两对百分号,不是因该set %PATH:str1=str2%么? 展开
 我来答
sudoku52
2011-12-05 · TA获得超过7万个赞
知道大有可为答主
回答量:1.2万
采纳率:82%
帮助的人:4781万
展开全部
%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符、逃逸字符等。也就是说%不仅仅将与其相关的特定字符串转义并替换为特定字符串,而且自身也会被“脱逸”。而且类似于C语言中的转义字符"\",双%会转义并脱逸为单%,四%则脱为双%。

除了for循环变量外,批处理变量的脱逸符要成对使用,就像数学四则运算的括号一样。
call set b=%%a:~0,%c%%%
就你举得这个例子来讲,最里面一对单%相当于四则运算里的小括号,外面的一对双%相当于中括号,再有3 个%就相当于大括号
百度网友dadee7f
2011-12-05 · TA获得超过1869个赞
知道小有建树答主
回答量:867
采纳率:67%
帮助的人:383万
展开全部
是set %PATH:str1=str2%没错,只是str1被%char1%代替,str2被%char2%代替,PATH被%str%代替了而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IP大神
2011-12-05 · TA获得超过614个赞
知道小有建树答主
回答量:1513
采纳率:50%
帮助的人:547万
展开全部
因为他是变量里面还有变量
于是最外围的变量就是用的两个了啊
同样的
还能用到3个%的
追问
比如这一段
@echo off
set c=2
set a=123
call set b=%%a:~0,%c%%%
echo %b%
pause
%a:~0,%c%%不就是12吗,那最外层%12%怎么解释
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式