批处理set中%的用法
经常看到这样的用法callset"str=%%str:%char1%=%char2%%%",最外层怎么需要两对百分号,不是因该set%PATH:str1=str2%么?...
经常看到这样的用法call set "str=%%str:%char1%=%char2%%%" ,最外层怎么需要两对百分号,不是因该set %PATH:str1=str2%么?
展开
3个回答
展开全部
%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符、逃逸字符等。也就是说%不仅仅将与其相关的特定字符串转义并替换为特定字符串,而且自身也会被“脱逸”。而且类似于C语言中的转义字符"\",双%会转义并脱逸为单%,四%则脱为双%。
除了for循环变量外,批处理变量的脱逸符要成对使用,就像数学四则运算的括号一样。
call set b=%%a:~0,%c%%%
就你举得这个例子来讲,最里面一对单%相当于四则运算里的小括号,外面的一对双%相当于中括号,再有3 个%就相当于大括号
除了for循环变量外,批处理变量的脱逸符要成对使用,就像数学四则运算的括号一样。
call set b=%%a:~0,%c%%%
就你举得这个例子来讲,最里面一对单%相当于四则运算里的小括号,外面的一对双%相当于中括号,再有3 个%就相当于大括号
展开全部
是set %PATH:str1=str2%没错,只是str1被%char1%代替,str2被%char2%代替,PATH被%str%代替了而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为他是变量里面还有变量
于是最外围的变量就是用的两个了啊
同样的
还能用到3个%的
于是最外围的变量就是用的两个了啊
同样的
还能用到3个%的
追问
比如这一段
@echo off
set c=2
set a=123
call set b=%%a:~0,%c%%%
echo %b%
pause
%a:~0,%c%%不就是12吗,那最外层%12%怎么解释
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询