Board logo

标题: [其他] [已解决]批处理中的百分号是什么意思? [打印本页]

作者: li201273024    时间: 2008-4-24 03:54     标题: [已解决]批处理中的百分号是什么意思?

“%”这个符号我始终看不懂,不知道什么意思。
有高手指点下吗?谢谢
作者: lingfeng    时间: 2008-4-24 20:27

你写个代码举个例子吧。因为%在批处理中的用法比较多。可能是参数,也可能是变量,还可能是其它的用法。
作者: namejm    时间: 2008-8-21 09:31

  请查看 批处理符号详解 第2点。
作者: start    时间: 2008-8-21 09:33

 百分号用在不同的场合,有不同的含义:
  ① 当百分号成对出现,并且其间包含非特殊字符时,一般做变量引用处理,比如:%var%、%str%。把以下代码保存为批处理文件,运行后观察屏幕显示结果:
复制内容到剪贴板代码:
@echo off
set str=abc
echo 变量 str 的值是: %str%
pause
  在屏幕上将显示这样的结果:
引用:
变量 str 的值是: abc
按任意键继续...
  另外,百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0~9这10个数字,如%0、%1,请看演示代码:
复制内容到剪贴板代码:
@echo off
if defined str goto next
set str=
set /p str=请把文件拉到本窗口后回车:
call "%~0" %str%
pause
exit

:next
cls
echo 本批处理文件完整路径为:"%~0"
echo 拖到本窗口的文件完整路径为:"%~1"
goto :eof
  ② 出现在 set /a 语句中时,表示两数相除取余数,也就是所谓的模运算,它在命令行窗口和批处理文件中的写法略有差异:在命令行窗口中,只需要单个的%,在批处理文件中,需要连续两个百分号,写成%%。
  例如:在命令行窗口中,运行 set /a num=4%2 ,则结果将显示0,因为4除以2的余数为0;如果保存为批处理文件,则此语句将略有改变:
复制内容到剪贴板代码:
@echo off
set /a num=4%%2
echo 4除以2的余数为 %num%
pause
  ③ 转义符号:如果要显示%本身时,需要在前面用%来转义。例如:
复制内容到剪贴板代码:
@echo off
echo 一个百分号:%%
echo 两个百分号:%%%%
echo 三个百分号:%%%%%%
pause
作者: 00bat44    时间: 2008-8-22 08:09

学习了!                 
谢谢~~
作者: 星之守护    时间: 2008-8-26 00:17

路过学习了..谢谢!
作者: pengpangxiong    时间: 2009-1-5 18:15     标题: 这个呢?

set time_=%time%
if not %time_:~-4% == 0.00 goto loop
那这里%time_:~-4%就不知道怎么理解了,哪位说一下啊
作者: Batcher    时间: 2009-1-5 19:07     标题: 回复 8楼 的帖子

仔细看看帮助
set /?
也可以为扩展名指定子字符串。

    %PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,
使用的数字则是环境变量数值长度加上指定的偏移量或长度。

    %PATH:~-10%

会提取 PATH 变量的最后十个字符。

    %PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。

作者: wolhh    时间: 2009-1-21 14:39

楼主辛苦 努力学习中~~~~~~~~
作者: sjzong    时间: 2009-4-14 15:18

感谢楼主!努力学习!
作者: cinfei    时间: 2009-8-10 15:23

那%config%、%drive%呢是不是特定的什么?
作者: suseek    时间: 2013-9-10 14:23

很好 楼主加油




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2