批处理文件中这些代码行的含义是什么?

时间:2017-02-13 17:15:22

标签: batch-file variables

我试图解释我为工作而写的批处理文件,并且我很难解释这一部分。需要说明的是,该部分按设计工作,因此这不是关于如何编写它的问题;我无法弄清楚它叫什么以及如何向同事解释它。特别是,我对代字号的位置感到好奇。例如,我的代码中的:~0,1 :~0,3 :~3,2 。对于我的生活,我无法解释它们是如何工作的。我认为他们扩展变量,但这只是谷歌搜索引出的变量。

这是我脚本中的部分:

:_RebootQuestion
ECHO.
Set /p _Resp=Would you like to reboot now (Y/N)?
If /I "%_Resp:~0,1%"=="Y" shutdown -r -t 0 -f
If /I "%_Resp:~0,1%"=="N" exit
If /I NOT "%_Resp:~0,1%"=="N" (
    Echo Y or N please. &GoTo _RebootQuestion
    )

这是我在网上看到的一个例子:

set test=12345 
echo %test:~0,3% 
echo %test:~3,2%

2 个答案:

答案 0 :(得分:1)

https://ss64.com/nt/syntax-substring.html。 基本上,您正在提取变量的子字符串:

  %variable:~num_chars_to_skip%
  %variable:~num_chars_to_skip,num_chars_to_keep%

答案 1 :(得分:1)

这些被称为子串。基本上,它们提取由character lengthoffset指定的变量的一部分。
在您的脚本中,%_Resp:~0,1%将获取用户输入的第一个字符并检查它是否为< em> Y 或 N
这意味着用户可以输入是,否,Y,N ,因为它们都以相同的字母开头



正如set /?

所述
  

也可以指定扩展的子字符串。

%PATH:~10,5%
     

会扩展PATH环境变量,然后只使用5   从第11个(偏移10)字符开始的字符   扩大结果。如果未指定长度,则默认为   变量值的其余部分。如果是任何一个数字(偏移或   (长度)是负数,那么使用的数字是长度   环境变量值添加到指定的偏移量或长度。

%PATH:~-10%
     

将提取PATH变量的最后10个字符。

%PATH:~0,-2%
     

将提取除PATH变量的最后2个字符之外的所有字符。