精华内容
下载资源
问答
  • 关于批处理以及批处理常用命令的总结 ... 目前比较常见 的批处理包含两类:DOS批处理PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批

    关于批处理以及批处理常用命令的总结

     

    【 一、什么是批处理 】

     批处理文件图标 批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展名为 bat 。
      目前比较常见 的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。这里要讲的就是DOS批处理。
      批处理是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND.COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件具有.bat或者.cmd的扩展名,其最简单的例子,是逐行书写在命令行中会用到的各种命令。更复杂的情况,需要使用if,for,goto等命令控制程序的运行过程,如同C,Basic等中高级语言一样。如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理文件,或称为批处理程序,是由一条条的DOS命令组成的普通文本文件,可以用记事本直接编辑或用DOS命令创建,也可以用DOS下的文本编辑器Edit.exe来编辑。在“命令提示”下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe运行该批处理程序。一般情况下,每条命令占据一行;当然也可以将多条命令用特定符号(如:&、&&、|、||等)分隔后写入同一行中;还有的情况就是像if、for等较高级的命令则要占据几行甚至几十几百行的空间。系统在解释运行批处理程序时,首先扫描整个批处理程序,然后从第一行代码开始向下逐句执行所有的命令,直至程序结尾或遇见exit命令或出错意外退出。

    【 二、简单批处理命令简介 】

      【 echo 命令 】
      打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
      语法
      echo [{on|off}] [message]
      Sample:@echo off / echo hello world
      在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一
      些命令到特定的文件中。
      【 rem 命令 】
      注释命令,类似于在C语言中的/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读
      和你自己日后修改。
      Rem Message
      Sample:@Rem Here is the description.
      【 pause 命令 】
      暂停命令。运行 Pause 命令时,将显示下面的消息:
      Press any key to continue. . .(或:请按任意键继续. . .)
      Sample:
      @echo off
      :begin
      copy G:*.* d:/back
      echo 请插入另一张光盘...
      pause
      goto begin
      在这个例子中,驱动器 G 中磁盘上的所有文件均复制到d:/back中。显示的注释提示您将另一张光盘
      盘放入驱动器 G 时,pause 命令会使程序挂起,以便您更换光盘,然后按任意键继续处理。
      【 call 命令 】
      从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的
      标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
      语法
      call [[Drive:][Path] FileName ] [:label [arguments]]
      参数
      [Drive:}[Path] FileName
      指定要调用的批处理程序的位置和名称。
      【 start 命令 】
      调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
      如:start calc.exe 即可打开Windows的计算器。
      常用参数:
      MIN 开始时窗口最小化
      SEPARATE 在分开的空间内开始 16 位 Windows 程序
      HIGH 在 HIGH 优先级类别开始应用程序
      REALTIME 在 REALTIME 优先级类别开始应用程序
      WAIT 启动应用程序并等候它结束
      parameters 这些为传送到命令/程序的参数
      执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令
      脚本内执行,该新行为则不会发生。
      【 goto 命令 】
      跳转命令。程序指针跳转到指定的标签,从标签后的第一条命令开始继续执行批处理程序。
      语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
      Sample:
      if {%1}=={} goto noparms
      if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释
      。)
      @Rem check parameters if null show usage
      :noparms
      echo Usage: monitor.bat ServerIP PortNumber
      goto end
      标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto
      命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。
      【 set 命令 】
      显示、设置或删除变量。
      显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值。
      设置变量:set aa=abcd 此句命令便可向变量aa赋值abcd。如果变量aa已被定义,则aa的值被修改为abcd;若aa尚未定义,则此句命令即可定义新的变量aa,同时为变量aa赋予初始值abcd。
      删除变量:set aa= 此句命令即可删除变量aa。若变量aa已被定义,则删除变量aa;若aa尚未定义,则此句命令为实质意义。
      需要说明的是,批处理中的变量是不区分类型的,不需要像C语言中的变量那样还要区分int、float、char等。比如执行set aa=345后,变量aa的值既可以被视为数字345,也可以被视为字符串345。
      set命令具有扩展功能,如用作交互输入、字符串处理、数值计算等,属于高级命令范畴。

    【 三、批处理符号简介 】

      【 回显屏蔽 @ 】
      表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
      @用法举例:通过运行批处理文件对比pause和@pause命令即可明了@的效果。
      【 重定向1 >与>> 】
      将输出信息重定向到指定的设备或文件。系统默认输出到显示器。
      如:echo aaaaa>a.txt 即可将本在显示器上显示的信息aaaaa输出到文件a.txt中,屏幕上没有任何显示。如果文件a.txt本来已经存在,该命令将首先擦除a.txt中的所有信息,然后写入信息aaaaa;若a.txt本来就不存在,该命令即可新建一个a.txt文件,并写入信息aaaaa。
      echo aaaaa>>a.txt 类似于echo aaaaa>a.txt。区别在于:如果a.txt本已存在,>a.txt会擦除a.txt中的原有内容,而>>a.txt并不擦除原有内容,仅在a.txt文件的末尾添加信息aaaaa。a.txt不存在时,二者没有差别。
      【 重定向2 < 】
      将输入信息来源重定向为指定的设备或文件。系统默认从显示器读取输入信息。
      重定向使用举例:
      =========================================
      @echo off
      echo abcdefg——这是文件a.txt中的信息>a.txt
      echo 请任意输入字符,以回车结束:
      set /p ifo=
      cls
      echo 【 从屏幕获得的输入信息 】
      echo %ifo%
      set /p ifo=<a.txt
      echo 【 从文件a.txt获得的输入信息 】
      echo %ifo%
      pause>nul
      =========================================
      读者观察命令与输出即可体会到重定向的功能和效果。
      【 管道符号 | 】
      将管道符号前面命令的输出结果重定向输出到管道符号后面的命令中去,作为后面命令的输入。使用格式为:command_1|command_2
      管道符号使用举例:
      =========================================
      @echo off
      echo aaaa>a.txt
      del /p a.txt
      pause
      =========================================
      @echo off
      echo aaaa>a.txt
      echo y|del /p a.txt
      pause
      =========================================
      对比以上两个批处理执行结果,读者即可明白管道符的用法和效果。
      需要说明的是,上面del命令添加开关/p只是为了让读者明白管道符号的使用方法,实际删除文件时不加/p开关即可实现无提示直接删除。
      【 转义符 ^ 】
      将特殊符号转化为一般符号,即剥离特殊符号的特殊地位。特殊符号指:| & > <
      比如,如果我们想输出符号“>”,直接用命令 echo > 是不行的,必须修改为 echo ^> 。其余几个特殊符号类似需要有同样的处理。
      转义字符使用举例:
      =========================================
      @echo off
      echo aaaa>a.txt
      echo 第一句echo执行完毕
      echo aaaa^>a.txt
      echo 第二句echo执行完毕
      pause
      =========================================
      比较上面的两句echo,第一句echo将信息aaaa输出到了文件a.txt,而第二句echo则在直接屏幕上显示除aaaa>a.txt
      【 逻辑命令符 】
      逻辑命令符包括:&、&&、||
      &-无条件执行&符号后面的命令;
      &&-当&&前面的命令成功执行时,执行&&后面的命令,否则不执行;
      ||-当||前面的命令失败时,执行||后面的命令,否则不执行。
      =========================================
      @echo off
      echo ^|^|
      reg add HKCU /v try /f||echo **成功**
      reg add HKCU1 /v try /f||echo **失败**
      echo ^&^&
      reg delete HKCU /v try /f&&echo **成功**
      reg delete HKCU /v try /f&&echo **失败**
      echo ^&
      reg delete HKCU /v try /f&echo **成功**
      reg delete HKCU /v try /f&echo **失败**
      pause
      =========================================
      执行reg add或reg delete后,系统会给出执行结果;我们通过echo命令也给出了“执行结果”。对比系统和我们自己给出的结果,既可以验证逻辑命令的判断机理。

    【 四、常用DOS命令 】

      【 文件夹管理 】
      cd 显示当前目录名或改变当前目录。
      md 创建目录。
      rd 删除一个目录。
      dir 显示目录中的文件和子目录列表。
      tree 以图形显示驱动器或路径的文件夹结构。
      path 为可执行文件显示或设置一个搜索路径。
      xcopy 复制文件和目录树。
      【 文件管理 】
      type 显示文本文件的内容。
      copy 将一份或多份文件复制到另一个位置。
      del 删除一个或数个文件。
      move 移动文件并重命名文件和目录。(Windows XP Home Edition中没有)
      ren 重命名文件。
      replace 替换文件。
      attrib 显示或更改文件属性。
      find 搜索字符串。
      fc 比较两个文件或两个文件集并显示它们之间的不同
      【 网络命令 】
      ping 进行网络连接测试、名称解析
      ftp 文件传输
      net 网络命令集及用户管理
      telnet 远程登陆
      ipconfig显示、修改TCP/IP设置
      msg 给用户发送消息
      arp 显示、修改局域网的IP地址-物理地址映射列表
      【 系统管理 】
      at 安排在特定日期和时间运行命令和程序
      shutdown立即或定时关机或重启
      tskill 结束进程
      taskkill结束进程(比tskill高级,但WinXPHome版中无该命令)
      tasklist显示进程列表(Windows XP Home Edition中没有)
      sc 系统服务设置与控制
      reg 注册表控制台工具
      powercfg控制系统上的电源设置
      对于以上列出的所有命令,在cmd中输入命令+/?即可查看该命令的帮助信息。如find /?

    【 五、语句结构 】

      类似于C语言,批处理也有它的语句结构。批处理的语句结构主要有选择结构(if语句)、循环结构(for语句)等。
      【 if语句(选择结构) 】
      if语句实现条件判断,包括字符串比较、存在判断、定义判断等。通过条件判断,if语句即可以实现选择功能。
      1、字符串比较
      if语句仅能够对两个字符(串)是否相同、先后顺序进行判断等。其命令格式为:
      IF [not] string1 compare-op string2 command1 [else command2]
      其中,比较操作符compare-op有以下几类:
      == - 等于
      EQU - 等于
      NEQ - 不等于
      LSS - 小于
      LEQ - 小于或等于
      GTR - 大于
      GEQ - 大于或等于
      选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非。
      字符串比较示例:
      ===============================================
      @echo off
      set str1=abcd1233
      set str2=ABCD1234
      if %str1%==%str2% (echo 字符串相同!) else (echo 字符串不相同!)
      if /i %str1% LSS %str2% (echo str1^<str2) else (echo str1^>=str2)
      echo.
      set /p choice=是否显示当前时间?(y/n)
      if /i not %choice% EQU n echo 当前时间是:%date% %time%
      pause>nul
      ===============================================
      对于最后一个if判断,当我们输入n或N时的效果是一样的,都不会显示时间。如果我们取消开关/i,则输入N时,依旧会显示时间。
      另外请注意一下几个细节:1-echo str1^<str2和echo str1^>=str2;2-echo.。
      2、存在判断
      存在判断的功能是判断文件或文件夹是否存在。其命令格式为:
      IF [NOT] EXIST filename command1 [else command2]
      ===============================================
      @echo off
      if exist %0 echo 文件%0是存在的!
      if not exist %~df0 (
      echo 文件夹%~df0不存在!
      ) else echo 文件夹%~df0存在!
      pause>nul
      ===============================================
      这里注意几个地方:
      1-存在判断既可以判断文件也可以判断文件夹;
      2-%0即代表该批处理的全称(包括驱动器盘符、路径、文件名和扩展类型);
      3-%~df0是对%0的修正,只保留了其驱动器盘符和路径,详情请参考for /?,属高级批处理范畴;
      4-注意if语句的多行书写,多行书写要求command1的左括号必须和if在同一行、else必须和command1的右括号同行、command2的左括号必须与else同行、command1和command2都可以有任意多行,即command可以是命令集。
      3、定义判断
      定义判断的功能是判断变量是否存在,即是否已被定义。其命令格式为:
      IF [not] DEFINED variable command1 [else command2]
      存在判断举例:
      ===============================================
      @echo off
      set var=111
      if defined var (echo var=%var%) else echo var尚未定义!
      set var=
      if defined var (echo var=%var%) else echo var尚未定义!
      pause>nul
      ===============================================
      对比可知,"set var="可以取消变量,收回变量所占据的内存空间。
      【 for语句(循环结构) 】
      for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多个开关,不同开关将会实现不同的功能。
      1、无开关
      无开关的for语句能够对设定的范围内进行循环,是最基本的for循环语句。其命令格式为:
      FOR %%variable IN (set) DO command
      其中,%%variable是批处理程序里面的书写格式,在DOS中书写为%variable,即只有一个百分号(%);set就是需要我们设定的循环范围,类似于C语言里面的循环变量;do后面的command就是循环所执行的命令,即循环体。
      无开关for语句举例:
      ===============================================
      @echo off
      for %%i in (a,"b c",d) do echo %%i
      pause>nul
      ===============================================
      2、开关/L
      含开关/L的for语句,可以根据set里面的设置进行循环,从而实现对循环次数的直接控制。其命令格式为:
      FOR /L %%variable IN (start,step,end) DO command
      其中,start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数。
      含开关/L的for语句举例(创建5个文件夹):
      ===============================================
      @echo off
      for /l %%i in (1,2,10) do md %%i
      pause
      ===============================================
      上例将新建5个文件夹,文件夹名称依次为1、3、5、7、9。可以发现,%%i的结束值并非end的值10,而是不大于end的一个数。
      3、开关/F
      含开关/F的for语句具有最强大的功能,它能够对字符串进行操作,也能够对命令的返回值进行操作,还可以访问硬盘上的ASCII码文件,比如txt文档等。其命令格式为:
      FOR /F ["options"] %%variable IN (set) DO command
      其中,set为("string"、'command'、file-set)中的一个;options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一个或多个的组合。各选项的意义参见for /f。一般情况下,使用较多的是skip、tokens、delims三个选项。
      含开关/F的for语句举例:
      ===============================================
      @echo off
      echo **No Options:
      for /f %%a in ("1,2,10") do echo a=%%a
      echo **Options tokens ^& delims:
      for /f "tokens=1-3 delims=," %%a in ("1,2,10") do echo a=%%a b=%%b c=%%c
      pause
      ===============================================
      @echo off
      echo 本文件夹里面的文件有:
      for /f "skip=5 tokens=3* delims= " %%a in ('dir') do (
      if not "%%a"=="<DIR>" if not "%%b"=="字节" if not "%%b"=="可用字节" echo %%b
      )
      pause
      ===============================================
      @echo off
      echo 本文件夹里面的文件有:
      dir>c:/file.txt
      for /f "skip=5 tokens=3* delims= " %%a in (c:/file.txt) do (
      if not "%%a"=="<DIR>" if not "%%b"=="字节" if not "%%b"=="可用字节" echo %%b
      )
      del c:/file.txt
      pause
      ===============================================
      对于后面的两个例子,其中options里面的delims= 是可以删除的,因为只要添加了/F开关系统就将delims的值默认为空格。
      符号字符串中的最后一个字符星号,
      那么额外的变量将在最后一个符号解析之后
      分配并接受行的保留文本。本例中也可以改为4,不过文件名中有空格的文件,只能显示空格以前部分
      同时我们也看到了,for语句的do后面的command也是可以分行的,只需要保证command的左括号和do在同一行就可以了。
      4、开关/D或/R
      含开关/D或/R的for语句是与目录或文件有关的命令,一般情况下很少使用。含开关/R的命令有时候被用于通过遍历文件夹来查找某一个文件或文件夹,故而列举此例。
      含开关/R的for语句举例(文件夹遍历):
      ===============================================
      @echo off
      setlocal enabledelayedexpansion
      FOR /R d: %%i IN (.) DO (
      set dd=%%i
      set "dd=!dd:~0,-1!"
      echo !dd!
      )
      pause
      exit
      ===============================================
      上例即可以罗列出D盘下的所有文件夹,其速度要比命令"tree d:"慢多了,不过其返回结果的实用性则远远超过了tree命令。
      一般情况下我们不推荐通过遍历文件夹来查找文件,特别是在查找某些程序(比如QQ.exe)的位置时。推荐通过reg命令查找注册表来查找QQ的路径,以保证查找效率。
      上例中也出现了几个新面孔,如setlocal、感叹号等。其中,感叹号其实就是变量百分号(%)的强化版。之所以要用!而不用%,是因为在for循环中,当一个变量被多次赋值时,%dd%所获取的仅仅是dd第一次被赋予的值;要想刷新dd的值,就必须首先通过命令"setlocal enabledelayedexpansion"来开启延迟变量开关,然后用!dd!来获取dd的值。
      for语句是批处理里面功能最强大、使用最普遍却又最难掌握的一套命令,这也是批处理菜鸟和批处理高手最明显的一个分水岭,一旦掌握了这套命令,那么你就离批处理达人不远了!

    【 六、字符串处理 】

      批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集。批处理中可实现的字符串处理功能有:截取字符串内容、替换字符串特定字段、合并字符串、扩充字符串等功能。下面对这些功能一一进行讲解。
      【 1、截取字符串 】
      截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能:
      =========================================
      @echo off
      set ifo=abcdefghijklmnopqrstuvwxyz0123456789
      echo 原字符串(第二行为各字符的序号):
      echo %ifo%
      echo 123456789012345678901234567890123456
      echo 截取前5个字符:
      echo %ifo:~0,5%
      echo 截取最后5个字符:
      echo %ifo:~-5%
      echo 截取第一个到倒数第6个字符:
      echo %ifo:~0,-5%
      echo 从第4个字符开始,截取5个字符:
      echo %ifo:~3,5%
      echo 从倒数第14个字符开始,截取5个字符:
      echo %ifo:~-14,5%
      pause
      =========================================
      当然,上面的例子只是将字符串处理的基本功能展示出来了,还看不出字符串处理具体有什么用处。下面这个例子是对时间进行处理。
      =========================================
      @echo off
      echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒
      pause
      =========================================
      【 2、替换字符串 】
      替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能:
      =========================================
      @echo off
      set aa=伟大的中国!我为你自豪!
      echo 替换前:%aa%
      echo 替换后:%aa:中国=中华人民共和国%
      echo aa = %aa%
      set "aa=%aa:中国=中华人民共和国%"
      echo aa = %aa%
      pause
      =========================================
      对于上面的例子有一点说明,对比两个echo aa = %aa%可以发现,如果要修改变量aa的内容的话,就需要将修改结果“%aa:中国=中华人民共和国%”赋值给变量aa。上面的字符串截取也有着同样的特点。
      【 3、字符串合并 】
      其实,合并字符串就是将两个字符串放在一起就可以了。举例说明:
      =========================================
      @echo off
      set aa=伟大的中国!
      set bb=我为你自豪!
      echo %aa%%bb%
      echo aa=%aa%
      echo bb=%bb%
      set "aa=%aa%%bb%"
      echo aa=%aa%
      pause
      =========================================
      同样,如果要改变变量aa的内容的话,就需要将合并结果“%aa%%bb%”赋值给变量aa。
      【 4、扩充字符串 】
      “扩充”这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下:
      =========================================
      ~I - 删除任何引号("),扩充 %I
      %~fI - 将 %I 扩充到一个完全合格的路径名
      %~dI - 仅将 %I 扩充到一个驱动器号
      %~pI - 仅将 %I 扩充到一个路径
      %~nI - 仅将 %I 扩充到一个文件名
      %~xI - 仅将 %I 扩充到一个文件扩展名
      %~sI - 扩充的路径只含有短名
      %~aI - 将 %I 扩充到文件的文件属性
      %~tI - 将 %I 扩充到文件的日期/时间
      %~zI - 将 %I 扩充到文件的大小
      %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充
      到找到的第一个完全合格的名称。如果环境变量名
      未被定义,或者没有找到文件,此组合键会扩充到
      空字符串
      可以组合修饰符来得到多重结果:
      %~dpI - 仅将 %I 扩充到一个驱动器号和路径
      %~nxI - 仅将 %I 扩充到一个文件名和扩展名
      %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
      %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
      到找到的第一个驱动器号和路径。
      %~ftzaI - 将 %I 扩充到类似输出线路的 DIR
      =========================================
      以上内容引用于for /?帮助信息。其中的I代表变量I,不过需要说明的是,不是所有的变量都能够进行扩充的,有两个条件:1、该字符串代表一个文件路径;2、变量要用%x来表示,x可取a-z A-Z 0-9共62个字符中的任意一个。举例说明:
      =========================================
      @echo off
      echo 正在运行的这个批处理:
      echo 完全路径:%0
      echo 去掉引号:%~0
      echo 所在分区:%~d0
      echo 所处路径:%~p0
      echo 文件名:%~n0
      echo 扩展名:%~x0
      echo 文件属性:%~a0
      echo 修改时间:%~t0
      echo 文件大小:%~z0
      pause
      =========================================
      其中的%0是批处理里面的参数,代表当前运行的批处理的完全路径。类似的还有%1-%9,分别代表传递来的第1-9个参数。例子如下:
      ===============================================
      @echo off
      set aa=C:/Windows/PPP/a.btx
      call :deal aaa %aa% "c c" ddd eee
      pause>nul
      exit
      :deal
      echo %%0 = %0
      echo %%1 = %1
      echo %%2 = %2
      echo %%3 = %3
      echo %%4 = %4
      echo %%5 = %5
      ===============================================
      其中,变量aa在之前是不可以扩充的,通过call命令并将aa作为参数传递给子函数:deal,将aa变量转换成了变量%1,即符合%x格式,从而可以进行字符串扩充。
      至于%x中x取a-z A-Z的形式,可以复习一下for语句,for语句里面的变量就是用%x来表示的,因而可以直接进行扩充。

    【 七、数值计算 】

      批处理里面的数值计算功能较弱,只能够进行整型计算,忽略浮点数的小数部分;同时数值计算的范围也受限于系统位数,对于目前较为常见的32位机来说,数值计算能处理的数值范围为0x80000000h~0x7FFFFFFFh,即-2147483648~+2147483647。
      数值计算需要使用set命令,具体格式为“set /a expression”。其中,expression代表计算表达式,计算表达式跟C语言里面的表达式基本上完全一致。set支持的运算符也跟C语言里面的一样,只是没有了増一减一。set支持的运算符及优先级排序如下:
      =========================================
      () - 分组
      ! ~ - - 一元运算符(逻辑非、按位非、取负)
      * / % - 算数运算符(乘、除得商、除得余数,即取余)
      + - - 算数运算符(加、减)
      << >> - 逻辑移位(左移一位、右移一位)
      & - 按位“与”
      ^ - 按位“异”
      | - 按位“或”
      = *= /= %= += -= - 赋值
      &= ^= |= <<= >>=
      , - 表达式分隔符(set可一次处理多个表达式)
      =========================================
      我们知道,批处理中取变量的值是需要用%或者!的,而在set /a 中,直接用变量名称即可取得变量的值。另外,set支持八进制(数字前缀0)、十进制(数字无前缀)和十六进制(数字前缀0x),且支持不同进制之间的计算,如set /a a=123+0123+0x123,计算及显示结果为十进制。

    【 八、概念方法 】

      本节学习有关批处理的一些比较琐碎、但又比较有价值的一些知识,运用这些知识后,才有条件更好的实现的批处理的功能,并能使批处理摆脱黑白世界而显得更加多姿多彩。废话少说,开讲啦~
      【(一)环境变量 】
      所谓“环境变量”,实际上就是C语言里面的“变量”的意思。批处理的变量可以分为两类,由系统定义的系统变量和由用户根据需要自定义的用户变量。
      【 1、系统变量 】
      批处理的一些变量是由操作系统事先定义好的,可以适用于任何批处理,我们称这些特殊的变量为“系统变量”。系统变量有很多个,包括硬件类、操作系统类、文件路径类、系统时间类等。要查看所有的系统变量,请新打开一个cmd窗口,输入set回车即可。对几个比较常用的变量解释如下:
      ComputerName 计算机名,即右键 我的电脑--属性--计算机名 选项卡中的“完整的计算机名称”
      ComSpec cmd.exe完整路径名
      HomeDrive 系统分区盘符,一般都是C盘,故而HomeDrive=C:
      Path 可执行文件默认搜索路径。这个东东非常重要!待会儿单独讲解…
      ProgramFiles 就是系统的Program Files的路径啦,一般都是C:/Program Files,这就是安装软件时默认的安装路径了
      Prompt 个性化设置cmd提示符的必备武器!不过,我没怎么用过~
      SystemDrive 包含系统根目录的分区,其实就是HomeDrive了
      SystemRoot 系统根目录路径,一般都是C:/WINDOWS
      Temp、Tmp 文件、程序等可使用的临时目录,默认是C:/WINDOWS/Temp或Tmp。几乎所有的程序在运行时都会在这个目录里面“临时”写入文件。一般情况下,程序写入的临时文件都应该被该程序删除,可惜的是,大部分的程序都很健忘,导致这个文件夹占据的空间越来越大,自然也就使我们的系统增肥喽。所以,我们要把它修改到其他分区,并且时时的清理里面的临时文件。
      UserName 当前用户名,即所登陆的账户名
      UserProfile 当前用户的配置目录,一般都是C:/Documents and Settings/%UserName%。默认情况下,我们的桌面就是这个目录下面的“桌面”文件夹;我的文档就是这个目录下面的“My Documents”文件夹。所以啦,往桌面上或我的文档里面放东西就是放到这个文件夹下面了,也就是放到C盘了,重装系统时要覆盖C盘内容的,所以桌面上或我的文档里面的东西当然就会Gone with the Wind了~解决方法有两个,一是保持良好的习惯,不把重要文件放到这两个地方;二是,修改默认设置,将这两个文件夹都移到其他分区。
      WinDir 操作系统路径,其实就是SystemRoot了
      【 2、用户变量 】
      编写批处理程序时,用户根据需要自己定义的变量称之为用户变量。用户变量类似于C语言里面的变量,仅仅在定义该变量的程序中有效。
      用户变量由set命令定义,这是批处理中非常非常重要的一个操作,从而使set命令成为批处理里面使用频率最高的几个命令之一。关于set命令的使用,参考set /?,本教程也会在后面对其进行讲解。
      【 3、变量引用 】
      前面的几节课里面,我们已经看到了如何引用变量,即直接用变量名操作变量,通过"%"或"!"来获取变量的值。其中,只有在for语句里面重复对同一变量多次赋值时才需要使用"!",并且在使用"!"调用变量时,要首先“启用延迟环境变量扩充”,启动命令为:SetLocal EnableDelayedExpansion。另外需要说明的是,“启用延迟环境变量扩充”后,所有的"!"都将被视为“取变量值”的特殊符号,即使用"^!"也不能输出符号"!"。若要输出"!",则需要“停用延迟环境变量扩充”,命令为:SetLocal DisableDelayedExpansion
      【(二)参数 】
      跟C语言类似,在调用函数或其他批处理时可能需要传递参数。批处理的参数传递分为直接和间接两种传递参数的方法。
      【 1、直接传递 】
      直接传递参数,即在使用call命令时,不使用任何参数,在子函数或子批处理里面直接对主函数(也称父批处理)里面的变量进行修改。这跟汇编语言里面的参数传递方式类似。
      直接传递参数举例:
      ===============================================
      @echo off
      setlocal enabledelayedexpansion
      set var=aCdehiM,?mnrstW y
      echo %var%
      call :deal
      setlocal disabledelayedexpansion
      set var=%var:?=!%
      echo %var%
      pause>nul
      exit
      :deal
      set tm=!var!
      set var=
      for %%i in (6,3,11,11,16,15,1,4,11,5,12,13,9,0,12,7,15,14,5,10,2,16,18,8) do (
      set var=!var!!tm:~%%i,1!
      )
      goto :eof
      ===============================================
      可以发现,当我们把变量var作为参数赋予子函数:deal后,子函数对var的值进行了修改;当子函数返回后,主函数里面的var的值就已经是子函数里面var被修改后的值了。
      该例子中,使用了本节课前面讲到的setlocal enabledelayedexpansion和setlocal disabledelayedexpansion,前者保证了var在for循环里面能够根据我们的意愿进行处理,后者保证了能够正确输出符号"!"。另外例子中还使用了命令set,利用set对字符串进行了处理。还有一个地方使用了语句goto :eof,该语句相当于C语言里面的return或汇编语言里面的RET,即子程序返回命令。需要说明的是,当子函数本身就在批处理文件的末尾的话,我们是可以省略这句话的,比如将此例的goto :eof删除是不会产生任何影响的。
      【 2、间接传递 】
      间接传递参数,即在使用call命令时,在其后面添加参数,形如call {[:label][ChildBatch]} Parameter1 Parameter2 ... ParameterN。这跟C语言里面传递参数的格式类似。不同于C语言,批处理中的子函数不需要定义形参,更不需要指定参数的个数。传递过来的参数,在子函数或子批处理里面是以%1~%9的形式表示的,即%1~%9分别表示传递过来的第1~9个参数。
      ===============================================
      @echo off
      call :deal aaa bbb "c c" ddd eee
      pause>nul
      exit
      :deal
      echo %%0 = %0
      echo %%1 = %1
      echo %%2 = %2
      echo %%3 = %3
      echo %%4 = %4
      echo %%5 = %5
      ===============================================
      通过这个例子就可以清晰的看到%n参数表示法的用法。参数列表中包含空格的依旧要用双引号(")引起来;另外,也可以看到,%0已经变成了子函数的标号了,而不是父批处理的文件名全称。
      【 3、区别 】
      这两种参数传递方法本质上是没有区别的,形式上,直接传递直接对原变量进行操作,丢失了原变量的值;间接传递则通过%n对原变量进行了简单的备份,并且通用性更强,即不限定原变量的名称。另外,使用%n还有一个非常大的好处,就是可以通过%~*i来加强处理变量的能力。关于%~*i,详细内容参见for /?。
      针对二者的差别,可以根据情况决定使用哪种传递方式:
      --1、作为参数的变量名固定、且在子函数中不需要对其进行备份的情况下,使用直接传递法;
      --2、若将子函数作为一个通用的程序模块,以适应于对不同变量的处理,或者作为参数的变量不需要备份时,使用间接传递法。
      具体使用哪种方法,还需根据实际情况或使用习惯进行选择。
      【(三)返回值 】
      有些命令在执行之后将会返回一定的错误值(errorlevel),可以通过errorlevel的值判断命令执行的状况。这点类似于C语言里面的exit(num),num就是错误代码。
      获取返回值errorlevel的方法就是,在执行命令后,立马调用返回值errorlevel,如echo %errorlevel%或者if %errorlevel%==1等命令。
      errorlevel举例:
      ===============================================
      @echo off
      reg add HKCU /v try /f>nul
      reg delete HKCU /v try /f
      if errorlevel 0 (echo  删除成功!) else (echo 删除失败!)
      reg delete HKCU /v try /f
      if %errorlevel%==0 (echo 删除成功!) else (echo 删除失败!)
      pause>nul
      ===============================================
      上面例子中,由于第一成功的删除了注册表,导致第二次因为找不到注册表而宣告失败。同时我们也看到了errorlevel的使用方法,即if errorlevel 0和if %errorlevel%==0是一样的。也许你注意到了,里面还有个笑脸呢~O(∩_∩)O哈哈~这就是ASCII码啦,后面跟你讲啊…
      一般情况下,程序或命令成功执行时,返回的errorlevel是0,错误时返回1或更高的值。当然,有些命令是没有返回值的,这点需要注意。
      嗯,有没有想起前面有个类似的东西啊?对了,那就是||和&&了,这两个符号就是根据errorlevel的值来进行逻辑判断的~
      【(四)用户交互 】
      批处理,黑框白字是它最著名的特征。虽然当初DOS为人们使用计算机做出了莫大的贡献,但在Windows盛行的今天,人们已经疏远并且惧怕那个黑色的窗口了。微软为了让先天有着批量处理“体力活”能力的DOS避免“冷酷”,便于接近,特意提供了几个小命令,加强批处理的用户交互功能。
      【 1、视窗 】
      首先我们要DIY它的窗口。使用命令:color、mode、msg。
      --1、设置窗口背景色和字体颜色by color。详细内容参见color /?。
      --2、设置窗口大小by "MODE CON [COLS=c] [LINES=n]",cols即宽度,lines即高度。
      --3、GUI交互窗口by msg。详细内容参见msg /?。
      视窗DIY举例:
      ===============================================
      @echo off
      set a=10
      set b=0
      :tex
      set /a a+=3
      set /a b+=1
      mode con cols=%a% lines=%b%
      if %a% lss 60 goto :tex
      echo O(∩_∩)O 圣诞快乐 O(∩_∩)O
      set a=15,a6,2e,d0,34,8b,4f,9d,5e
      for %%i in (%a%) do (
      ping -n 2 127.1>nul
      color %%i
      )
      for %%i in (%a%,%a%) do (
      ping -n 1 127.1>nul
      color %%i
      )
      >>ms.txt echo */. . . * .
      >>ms.txt echo ./* . [] * __
      >>ms.txt echo */ . .//~~~~~~~~~~~~'/. ^|◆
      >>ms.txt echo /* ,/,..,/,...........,/.◆
      >>ms.txt echo ^|^| ..▎# ▎田 田 ▎ ^| ▎◆
      >>ms.txt echo ^|^| ^&^&▎ ▎ ▎'^|'▎ o
      >>ms.txt echo ^|^| ##■■■■■■■■■■〓
      msg %username% /w /time:3600 <ms.txt
      del ms.txt
      pause
      ===============================================
      【 2、声音 】
      呵呵,是不是注意到了批处理没有声音呐?闲话不说,直接做实验吧 ^_^
      ===============================================
      @echo off
      echo 做好准备,响了啊!!
      pause
      cls
      echo 
      echo 怎么样?呵呵,刺激吧~
      pause
      cls
      mshta vbscript:createobject("sapi.spvoice").speak("Merry Christmas and Happy New Year!")(window.close)
      pause
      ===============================================
      speak好像不能讲中文呐~
      ■●●●●
      此处错误,如果tts安装了中文引擎是可以讲中文的。
      此外,这个就是调用vbs的方法:vbscript:createobject("sapi.spvoice").speak("Merry Christmas and Happy New Year!")
      ●●●●■
      【 3、控制 】
      在运行批处理的过程中,我们如何干预批处理呢?呵呵,直接点叉叉就可以结束它了!嗯,不错,不过,太野蛮了~
      --1、暂停批处理:直接按键盘上的Pause键喽
      --2、终止批处理:组合键Ctrl+C。不过,有时候它好像响应的不太积极啊…
      【(五)ASCII码 】
      前面的例子中,我们已经使用过一次ASCII码了,也就是那个笑脸。ASCII码是图形化的符号,可以用来点缀我们的批处理的。
      在cmd窗口中我们可以通过任意一个字符的ASCII码来输入该字符,比如Ctrl+G、Ctrl+N等,字母a-z对应ASCII码的1-26。对于ASCII码大于26的字符,可以通过这个方法来输入:按住Alt键不松,通过小键盘输入ASCII码的十进制值,松开Alt键即可。

    批处理常用命令及用法大全

    阅读下面文字需要一定的dos基础概念,象:盘符、文件、目录(文件夹)、子目录、根目录、当前目录
    每个命令的完整说明请加 /? 参数参考微软的帮助文档可以看到,在 /? 帮助里,"命令扩展名"一词会经常出现"命令扩

    展名"是指相对于win98的dos版本而言,每个命令新增的功能
    命令测试环境win2000proSP4win98的命令功能太少,就不作研究了

    注:如果对某一命令还不是很熟悉,可以在命令行窗口下输入:命令名/?的方式来获得帮助。
    例如:对dir命令的应用不熟悉,可以在命令行窗口下输入:

    dir /?

    1 echo 和 @回显控制命令
    @                    #关闭单行回显
    echo off             #从下一行开始关闭回显
    @echo off            #从本行开始关闭回显。一般批处理第一行都是这个
    echo on              #从下一行开始打开回显
    echo                 #显示当前是 echo off 状态还是 echo on 状态
    echo.                #输出一个"回车换行",一般就是指空白行
    echo hello world     #输出hello world
    "关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开

    回显
    2 errorlevel程序返回码

    echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,

    一般命令执行出错会设 errorlevel 为1

    3 dir显示目录中的文件和子目录列表
    dir                 #显示当前目录中的文件和子目录
    dir /a              #显示当前目录中的文件和子目录,包括隐藏文件和系统文件
    dir c: /a:d         #显示 C 盘当前目录中的目录
    dir c:/ /a:-d       #显示 C 盘根目录中的文件dir d:/mp3 /b/p     #逐屏显示 d:/mp3 目录里的文件,只显示文件

    名,不显示时间和大小
    dir *.exe /s显示当前目录和子目录里所有的.exe文件其中 * 是通配符,代表所有的文件名,还一个通配符 ? 代表一个

    任意字母或汉字如 c*.* 代表以 c 开头的所有文件?.exe 代表所有文件名是一个字母的.exe文件如果指定的目录或文件

    不存在,将返回 errorlevel 为1;每个文件夹的 dir 输出都会有2个子目录 . 和 ... 代表当前目录.. 代表当前目录的

    上级目录
    dir .               #显示当前目录中的文件和子目录
    dir ..              #显示当前目录的上级目录中的文件和子目录
    其它参数可参考 dir /?

    4 cd更改当前目录
    cd mp3              #进入当前目录中的mp3 目录
    cd ..               #进入当前目录中的上级目录
    cd/                 #进入根目录
    cd                  #显示当前目录
    cd /d d:/mp3        #可以同时更改盘符和目录
    cd "Documents and Settings"/All users文件名带空格,路径前需要加上引号!!如果更改到的目录不存在,则出错返

    回 errorlevel=1

    5 md创建目录
    md abc              #在当前目录里建立子目录 abc
    md d:/a/b/c         #如果 d:/a 不存在,将会自动创建

    6 rd删除目录
    rd abc              #删除当前目录里的 abc 子目录,要求为空目录
    rd /s/q d:/temp     #删除 d:/temp 文件夹及其子文件夹和文件,不需要按 Y 确认

    7 del删除文件
    del d:/test.txt     #删除指定文件,不能是隐藏、系统、只读文件
    del *.*删除当前目录里的所有文件,不包括隐藏、系统、只读文件,要求按 Y 确认
    del /q/a/f d:/temp/*.*删除 d:/temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
    del /q/a/f/s d:/temp/*.*删除 d:/temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录

    8 ren文件重命名
    ren 1.txt 2.bak     #把 1.txt 更名为 2.bak
    ren *.txt *.ini     #把当前目录里所有.txt文件改成.ini文件
    ren d:/temp tmp     #支持对文件夹的重命名

    9 cls清屏

    10 type显示文件内容
    type c:/boot.ini    #显示指定文件的内容,程序文件一般会显示乱码
    type *.txt          #显示当前目录里所有.txt文件的内容

    11 copy拷贝文件
    copy c:/test.txt d:/复制 c:/test.txt 文件到 d:/
    copy c:/test.txt d:/test.bak复制 c:/test.txt 文件到 d:/ ,并重命名为 test.bak
    copy c:/*.*复制 c:/ 所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录
    copy con test.txt从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机

    ,nul代表空设备
    copy 1.txt + 2.txt 3.txt合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件如果不指定 3.txt ,则保存到 1.txt
    copy test.txt +复制文件到自己,实际上是修改了文件日期

    12 title设置cmd窗口的标题
    title 新标题        #可以看到cmd窗口的标题栏变了

    13 ver显示系统版本

    14 label 和 vol设置卷标
    vol                 #显示卷标
    label               #显示卷标,同时提示输入新卷标
    label c:system      #设置C盘的卷标为 system

    15 pause暂停命令
    运行该命令时,将显示下面的消息:请按任意键继续 . . .
    一般用于看清楚屏幕上显示的内容

    16 rem 和 ::注释命令
    注释行不执行操作

    17 date 和 time日期和时间
    date          #显示当前日期,并提示输入新日期,按"回车"略过输入
    date/t        #只显示当前日期,不提示输入新日期
    time          #显示当前时间,并提示输入新时间,按"回车"略过输入
    time/t        #只显示当前时间,不提示输入新时间

    18 goto 和 :跳转命令
    :label        #行首为:表示该行是标签行,标签行不执行操作
    goto label    #跳转到指定的标签那一行

    19 find (外部命令)查找命令
    find "abc" c:/test.txt在 c:/test.txt 文件里查找含 abc 字符串的行如果找不到,将设 errorlevel 返回码为1
    find /i "abc" c:/test.txt查找含 abc 的行,忽略大小写
    find /c "abc" c:/test.txt显示含 abc 的行的行数

    20 more (外部命令)逐屏显示
    more c:/test.txt    #逐屏显示 c:/test.txt 的文件内容

    21 tree显示目录结构
    tree d:/            #显示D盘的文件目录结构

    22 &顺序执行多条命令,而不管命令是否执行成功
    c: & cd/ & dir /w相当于把下面3行命令写到1行去了c:cd/dir /w

    23 &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
    f: && cd/ && dir >c:/test.txt注意如果f盘不存在,那么后面2条命令将不会执行
    find "ok" c:/test.txt && echo 成功如果找到了"ok"字样,就显示"成功",找不到就不显示

    24 ||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

    find "ok" c:/test.txt || echo 不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示

    25 |管道命令
    前一个命令的执行结果输出到后一个命令
    dir *.* /s/a | find /c ".exe"管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令该命令行结果:

    输出当前文件夹及所有子文件夹里的.exe文件的个数
    type c:/test.txt|more这个和 more c:/test.txt 的效果是一样的

    26 > 和 >>输出重定向命令
    > 清除文件中原有的内容后再写入>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出

    到指定文件中指定文件如果不存在,则自动生成该文件
    echo hello world>c:/test.txt生成c:/test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成

    .reg .bat .vbs 等临时文件
    type c:/test.txt >prn屏幕上不显示文件内容,转向输出到打印机
    echo hello world>con在屏幕上显示hello world,实际上所有输出都是默认 >con 的
    copy c:/test.txt f: >nul拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息
    copy c:/test.txt f: >nul 2>nul不显示"文件复制成功"的提示信息,并且f盘不存在的话,也不显示错误提示信息
    echo ^^W ^> ^W>c:/test.txt生成的文件内容为 ^W > W^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^

    符号
    27 <从文件中获得输入信息,而不是从屏幕上
    一般用于 date time label 等需要等待输入的命令
    @echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输入直接修改当前日期

    28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数
    %0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数
    在C盘根目录新建test.bat,内容如下:
    @echo offecho %0echo %1echo %2echo %*
    运行cmd,输入 c:/test.bat "/a" /b /c /d可以看出每个参数的含意
    修改test.bat内容如下
    @echo offecho %1echo %~1echo %0echo %~f0echo %~d0echo %~p0echo %~n0echo %~x0echo %~s0echo %~a0echo %

    ~t0echo %~z0
    再运行cmd,输入 c:/test.bat "/a" /b /c /d可以参照 call/? 或 for/? 看出每个参数的含意注意这里可以对文件进行

    日期比较和大小比较
    echo load "%%1" "%%2">c:/test.txt生成的文件内容为 load "%1" "%2"批处理文件里,用这个格式把命令行参数输出到

    文件

    31 set设置变量
    引用变量可在变量名前后加 % ,即 %变量名%
    set                    #显示目前所有可用的变量,包括系统变量和自定义的变量
    echo %SystemDrive%     #显示系统盘盘符。系统变量可以直接引用
    set p                  #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
    set p=aa1bb1aa2bb2     #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
    echo %p%               #显示变量p代表的字符串,即aa1bb1aa2bb2
    echo %p:~6%            #显示变量p中第6个字符以后的所有字符,即aa2bb2
    echo %p:~6,3%          #显示第6个字符以后的3个字符,即aa2
    echo %p:~0,3%          #显示前3个字符,即aa1
    echo %p:~-2%           #显示最后面的2个字符,即b2
    echo %p:~0,-2%         #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
    echo %p:aa=c%          #用c替换变量p中所有的aa,即显示c1bb1c2bb2
    echo %p:aa=%           #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
    echo %p:*bb=c%         #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
    set p=%p:*bb=c%        #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
    set /a p=39            #设置p为数值型变量,值为39
    set /a p=39/10         #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3set /a p=p/10          #用 /a

    参数时,在 = 后面的变量可以不加%直接引用set /a p="1&0"         #"与"运算,要加引号。其它支持的运算符参见

    set/?
    set p=                 #取消p变量
    set /p p=请输入屏幕上显示"请输入",并会将输入的字符串赋值给变量p注意这条可以用来取代 choice 命令
    注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
    @echo off
    set p=aaa
    if %p%==aaa (   
      echo %p%  
      set p=bbb   
      echo %p%    )
    结果将显示aaaaaa因为在读取 if 语句时已经将所有 %p% 替换为aaa这里的"替换",在 /? 帮助里就是指"扩充"、"环境

    变量扩充"可以启用"延缓环境变量扩充",用 ! 来引用变量,即 !变量名!
    @echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    set p=aaaif %p%==aaa ( 
      echo %p%   
    set p=bbb   
    echo !p!    )
    ENDLOCAL
    结果将显示aaabbb
    还有几个动态变量,运行 set 看不到
    %CD%                  #代表当前目录的字符串
    %DATE%                #当前日期
    %TIME%                #当前时间
    %RANDOM%              #随机整数,介于0~32767
    %ERRORLEVEL%          #当前ERRORLEVEL 值
    %CMDEXTVERSION%       #当前命令处理器扩展名版本号
    %CMDCMDLINE%          #调用命令处理器的原始命令行可以用echo命令查看每个变量值,如 echo %time%注意 %time%

    精确到毫秒,在批处理需要延时处理时可以用到

    32 start批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令
    start explorer d:/调用图形界面打开D盘
    @echo offcd /d %~dp0regedit /s 劲舞团.regstart patcher.exe
    不加 start 命令的话,"劲舞团"运行时,后面会有个黑乎乎的cmd窗口

    33 call批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行有时有的应用程序用start调用出错的

    ,也可以call调用

    34 choice (外部命令)选择命令让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234……win98里

    是choice.comwin2000pro里没有,可以从win98里拷过来win2003里是choice.exechoice /N /C y /T 5 /D y>nul延时5秒

    下面是个 choice 语句的例子
    @echo off
    rem 以下在win2000pro运行通过,从win98里拷的chioce.com文件
    choice /c:abc aaa,bbb,ccc
    if errorlevel 3 goto ccc
    if %errorlevel%==2 goto bbb
    if errorlevel==1 goto aaa
    rem 必须先判断数值高的返回码rem 可以看到 errorlevel 值的判断有3种写法,有时某种写法不好用,可以用另外的写法
    rem 直接运行

    chioce相当于运行
    choice /c:yn:aaa
    echo aaa
    goto end
    :bbb
    echo bbb
    goto end
    :ccc
    echo ccc
    goto end
    :end

    35 assoc 和 ftype文件关联assoc 设置'文件扩展名'关联,关联到'文件类型'ftype 设置'文件类型'关联,关联到'执行程序和参数'当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开而是先判断.txt属于 txtfile '文件类型'再调用 txtfile 关联的命令行 txtfile=%SystemRoot%/system32/NOTEPAD.EXE %1可以在"文件夹选项"→"文件类型"里修改这2种关联
    assoc           #显示所有'文件扩展名'关联
    assoc .txt      #显示.txt代表的'文件类型',结果显示 .txt=txtfile
    assoc .doc      #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8
    assoc .exe      #显示.exe代表的'文件类型',结果显示 .exe=exefile
    ftype           #显示所有'文件类型'关联
    ftype exefile   #显示exefile类型关联的命令行,结果显示 exefile="%1" %* assoc .txt=Word.Document.8设置.txt为word类型的文档,可以看到.txt文件的图标都变了
    assoc .txt=txtfile恢复.txt的正确关联 ftype exefile="%1" %*恢复 exefile 的正确关联

    如果该关联已经被破坏,可以运行 command.com ,再输入这条命令

    36 pushd 和 popd切换当前目录
    @echo off
    c: & cd/ & md mp3       #在 C:/ 建立 mp3 文件夹
    md d:/mp4               #在 D:/ 建立 mp4 文件夹
    cd /d d:/mp4            #更改当前目录为 d:/mp4
    pushd c:/mp3            #保存当前目录,并切换当前目录为 c:/mp3
    popd                    #恢复当前目录为刚才保存的 d:/mp4一般用处不大,在当前目录名不确定时,会有点帮助

    32 subst (外部命令)映射磁盘。
    subst z:
    //server/d     #这样输入z:就可以访问//server/d
    subst z: /d             #取消该映射
    subst                   #显示目前所有的映

    38  xcopy (外部命令)文件拷贝
    xcopy d:/mp3 e:/mp3 /s/e/i/y复制 d:/mp3 文件夹、所有子文件夹和文件到 e:/ ,覆盖已有文件加 /i 表示如果 e:/ 没有 mp3 文件夹就自动新建一个,否则会有询问

    39 一些不常用的内部命令
    >& 将一个句柄的输出写入到另一个句柄的输入中
    <& 从一个句柄读取输入并将其写入到另一个句柄输出中shift 命令行传递给批处理的参数不止9个时,用以切换参数color 设置cmd窗口的显示颜色
    pormpt 更改命令提示符号,默认都是 盘符:/路径/> ,如 c:/>

    40 format (外部命令)格式化硬盘
    format c: /q/u/autotest/q表示快速格式化,/autotest表示自动格式化,不需要按 Y 确认/u表示每字节用

    F6 覆盖硬盘数据,使其不可用软件恢复format c: /c格式化C盘,并检测坏道

    41 fdisk (外部命令)硬盘分区win2000不带

    该命令win98里的fdisk不支持80G以上大硬盘,winme里的支持fdisk/mbr重建硬盘分区表,一般用于清除引导区病毒、还

    原精灵注意使用该命令不能从硬盘启动,必须软驱或光驱启动后直接运行

    42 ping (外部命令)
    ping -l 65500 -t 192.168.1.200不停的向192.168.1.200计算机发送大小为65500byte的数据包
    ping -n 10 127.0.0.1>nulping自己10次,可用于批处理延时10秒

    43 SC (外部命令)服务控制命令
    sc create aaa displayname= bbb start= auto binpath= "C:/WINDOWS/System32/alg.exe"创建服务,服务名称aaa,显示名称bbb,启动类型:自动可执行文件的路径"C:/WINDOWS/System32/alg.exe"
    sc description aaa "ccc"更改aaa的描述为ccc
    sc config aaa start= disabled binpath= "C:/WINDOWS/System32/svchost.exe -k netsvcs"更改aaa的启动类型:已禁用更改aaa的可执行文件的路径"C:/WINDOWS/System32/svchost.exe -k netsvcs"
    sc config aaa start= demand displayname= ddd更改aaa的启动类型:手动更改aaa的显示名称ddd
    sc start aaa启动aaa服务
    sc stop aaa停止aaa服务
    sc delete aaa删除aaa服务

     

    参考:批处理_百度百科  http://baike.baidu.com/view/80110.htm

           批处理常用命令及用法大全  http://bbs.bathome.cn/thread-39-1-1.html

     

    WindowsXP下运行命令使用大全

    在Windows系统中,我们打开一些程序都是通过鼠标一步一步的点击来打开,但是以下列出的这些命令,可以让你在Windows XP的“运行”窗口中运行应用程序。

    运行程序 运行命令

    辅助功能选项

    access.cpl

    添加硬件向导

    hdwwiz.cpl

    添加或删除程序

    appwiz.cpl

    管理工具

    control admintools

    自动更新

    wuaucpl.cpl

    Bluetooth文件传送向导

    fsquirt

    计算器

    calc

    证书管理控制台

    certmgr.msc

    字符映射表

    charmap

    磁盘检查工具

    chkdsk

    剪贴簿查看器

    clipbrd

    命令行提示符

    cmd

    组件服务

    dcomcnfg

    计算机管理

    compmgmt.msc

    日期和时间属性

    timedate.cpl

    DDE共享

    ddeshare

    设备管理器

    devmgmt.msc

    Direct X控制面板(如果已经安装)*

    directx.cpl

    Direct X诊断工具

    dxdiag

    磁盘清理工具

    cleanmgr

    磁盘碎片整理程序

    dfrg.msc

    磁盘管理

    diskmgmt.msc

    磁盘分区管理器

    diskpart

    显示属性

    control desktop

    显示属性

    desk.cpl

    显示属性的外观选项卡

    control color

    Dr. Watson系统诊断工具

    drwtsn32

    Driver Verifier Manager

    verifier

    事件查看器

    eventvwr.msc

    文件签名验证

    sigverif

    快速查找

    findfast.cpl

    文件夹选项

    control folders

    字体文件夹

    control fonts

    字体文件夹

    fonts

    空档接龙游戏

    freecell

    游戏控制

    joy.cpl

    组策略编辑器(XP专业版)

    gpedit.msc

    红心大战游戏

    mshearts

    Iexpress向导

    iexpress

    索引服务

    ciadv.msc

    Internet属性

    inetcpl.cpl

    IP配置实用程序(显示连接配置) ipconfig /all
    IP配置实用程序(显示DNS缓存内容) ipconfig /displaydns
    IP配置实用程序(删除DNS缓存内容) ipconfig /flushdns
    IP配置实用程序(释放全部(或指定)适配器的由DHCP分配的动态IP地址) ipconfig /release
    IP配置实用程序(为全部适配器重新分配IP地址) ipconfig /renew
    IP配置实用程序(刷新DHCP并重新注册DNS) ipconfig /registerdns
    IP配置实用程序(显示DHCP Class ID) ipconfig /showclassid
    IP配置实用程序(修改DHCP Class ID) ipconfig /setclassid

    Java控制面板(如果已经安装)

    jpicpl32.cpl

    Java控制面板(如果已经安装)

    javaws

    键盘属性

    control keyboard

    本地安全设置

    secpol.msc

    本地用户和组

    lusrmgr.msc

    从Windows注销

    logoff

    微软聊天程序

    winchat

    扫雷游戏

    winmine

    鼠标属性

    control mouse

    鼠标属性

    main.cpl

    网络连接

    control netconnections

    网络连接

    ncpa.cpl

    网络安装向导

    netsetup.cpl

    记事本 notepad

    Nview桌面管理器(如果已经安装)

    nvtuicpl.cpl

    对象包装程序

    packager

    ODBC数据源管理器

    odbccp32.cpl

    屏幕键盘

    osk

    AC3解码器(如果已经安装)

    ac3filter.cpl

    密码属性

    password.cpl

    性能

    perfmon.msc

    性能

    perfmon

    电话与调制解调器选项

    telephon.cpl

    电源选项属性

    powercfg.cpl

    打印机和传真

    control printers

    打印机文件夹

    printers

    TrueType造字程序

    eudcedit

    Quicktime(如果已经安装)

    QuickTime.cpl

    区域和语言选项

    intl.cpl

    注册表编辑器

    regedit

    注册表编辑器

    regedit32

    远程桌面 mstsc

    可移动存储

    ntmsmgr.msc

    可移动存储操作请求

    ntmsoprq.msc

    策略的结果集 (XP专业版)

    rsop.msc

    扫描仪与相机

    sticpl.cpl

    任务计划

    control schedtasks

    Windows安全中心

    wscui.cpl

    服务

    services.msc

    共享文件夹

    fsmgmt.msc

    关闭Windows

    shutdown

    声音和音频设备属性

    mmsys.cpl

    蜘蛛牌游戏

    spider

    SQL Client客户端网络实用工具

    cliconfg

    系统配置编辑器

    sysedit

    系统配置实用程序

    msconfig

    系统文件检查工具(立即扫描) sfc /scannow
    系统文件检查工具(下次启动时扫描) sfc /scanonce
    系统文件检查工具(每次启动时扫描) sfc /scanboot
    系统文件检查工具(返回默认设置) sfc /revert
    系统文件检查工具(清除文件缓存) sfc /purgecache

    系统文件检查工具(设置缓存大小=x)

    sfc /cachesize=x

    系统属性

    sysdm.cpl

    任务管理器

    taskmgr

    Telnet客户端

    telnet

    用户帐户管理

    nusrmgr.cpl

    辅助工具管理器

    utilman

    Windows防火墙

    firewall.cpl

    Windows放大镜

    magnify

    Windows管理体系结构

    wmimgmt.msc

    Windows系统安全工具

    syskey

    运行Windows更新

    wupdmgr

    漫游Windows XP

    tourstart

    写字板

    write

    WindowsXP下运行命令使用大全 - 你的样子 - 你的样子的博客

                                                        windows xp 运行命令大全

    winver检查Windows版本
    dxdiag检查DirectX信息
    mem.exe显示内存使用情况
    Sndvol32音量控制程序
    sfc.exe系统文件检查器
    gpedit.msc 组策略
    regedit.exe 注册表
    Msconfig.exe 系统配置实用程序
    cmd.exe CMD命令提示符
    chkdsk.exe Chkdsk磁盘检查
    mem.exe显示内存使用情况
    gpedit.msc 组策略
    regedit.exe 注册表
    Msconfig.exe 系统配置实用程序
    cmd.exe CMD命令提示符
    services.msc 服务
    lusrmgr.msc 本地账户管理
    drwtsn32 系统医生
    cleanmgr 整理
    iexpress 木马捆绑工具,系统自带
    mmc 控制台
    dcpromo 活动目录安装
    ntbackup 系统备份和还原
    rononce -p 15秒关机
    taskmgr 任务管理器
    conf 启动netmeeting
    devmgmt.msc 设备管理器
    diskmgmt.msc NT的磁盘管理器
    compmgmt.msc 计算机管理
    winchat 局域网聊天
    dvdplay DVD播放器
    mplayer2 简易widnows media player
    mspaint 画图板
    nslookup 网络管理的工具
    syskey 系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
    wupdmgr WIDNOWS UPDATE
    Clipbrd 剪贴板查看器
    Odbcad32 ODBC数据源管理器
    Nslookup IP地址侦测器

    开始 运行 命令 集锦

    winver---------检查Windows版本
    wmimgmt.msc----打开windows管理体系结构(WMI)
    wupdmgr--------windows更新程序
    wscript--------windows脚本宿主设置
    write----------写字板
    winmsd---------系统信息
    wiaacmgr-------扫描仪和照相机向导
    winchat--------XP自带局域网聊天
    mem.exe--------显示内存使用情况
    Msconfig.exe---系统配置实用程序
    mplayer2-------简易widnows media player
    mspaint--------画图板
    mstsc----------远程桌面连接
    mplayer2-------媒体播放机
    magnify--------放大镜实用程序
    mmc------------打开控制台
    mobsync--------同步命令
    dxdiag---------检查DirectX信息
    drwtsn32------ 系统医生
    devmgmt.msc--- 设备管理器
    dfrg.msc-------磁盘碎片整理程序
    diskmgmt.msc---磁盘管理实用程序
    dcomcnfg-------打开系统组件服务
    ddeshare-------打开DDE共享设置
    dvdplay--------DVD播放器
    net stop messenger-----停止信使服务
    net start messenger----开始信使服务
    notepad--------打开记事本
    nslookup-------网络管理的工具向导
    ntbackup-------系统备份和还原
    narrator-------屏幕“讲述人”
    ntmsmgr.msc----移动存储管理器
    ntmsoprq.msc---移动存储管理员操作请求
    netstat -an----(TC)命令检查接口
    syncapp--------创建一个公文包
    sysedit--------系统配置编辑器
    sigverif-------文件签名验证程序
    sndrec32-------录音机
    shrpubw--------创建共享文件夹
    secpol.msc-----本地安全策略
    syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
    services.msc---本地服务设置
    Sndvol32-------音量控制程序
    sfc.exe--------系统文件检查器
    sfc /scannow---windows文件保护
    tsshutdn-------60秒倒计时关机命令
    tourstart------xp简介(安装完成后出现的漫游xp程序)
    taskmgr--------任务管理器
    eventvwr-------事件查看器
    eudcedit-------造字程序
    explorer-------打开资源管理器
    packager-------对象包装程序
    perfmon.msc----计算机性能监测程序
    progman--------程序管理器
    regedit.exe----注册表
    rsop.msc-------组策略结果集
    regedt32-------注册表编辑器
    rononce -p ----15秒关机
    regsvr32 /u *.dll----停止dll文件运行
    regsvr32 /u zipfldr.dll------取消ZIP支持
    cmd.exe--------CMD命令提示符
    chkdsk.exe-----Chkdsk磁盘检查
    certmgr.msc----证书管理实用程序
    calc-----------启动计算器
    charmap--------启动字符映射表
    cliconfg-------SQL SERVER 客户端网络实用程序
    Clipbrd--------剪贴板查看器
    conf-----------启动netmeeting
    compmgmt.msc---计算机管理
    cleanmgr-------垃圾整理
    ciadv.msc------索引服务程序
    osk------------打开屏幕键盘
    odbcad32-------ODBC数据源管理器
    oobe/msoobe /a----检查XP是否激活 lusrmgr.msc----本机用户和组 logoff---------注销命令
    iexpress-------木马捆绑工具,系统自带
    Nslookup-------IP地址侦测器
    fsmgmt.msc-----共享文件夹管理器
    utilman--------辅助工具管理器
    gpedit.msc-----组策略

     

    win2003系统优化

    1.禁用配置服务器向导
    控制面板 -> 管理工具 -> 管理你的服务器,然后在窗口的左下角选上“登录时不要显示该页”。

    2.启用硬件加速
    右键点击桌面 -> 属性 -> 设置 -> 高级 -> 疑难解答,把该页面的硬件加速滚动条拉到“完全”,点击“确定”保存退出。这期间可能出现一瞬的黑屏是完全正常。

    3.DirectX加速
    开始 -> 运行 -> 键入“dxdiag”并回车,打开“DirectX 诊断工具”,在“显示”页面中,启用DirectDraw 加速、Direct3D 加速、AGP 纹理加速三个按钮。

    4.禁用关机事件跟踪
    开始 -> 运行 -> 键入“gpedit.msc”并回车,展开计算机配置 -> 管理模板 -> 系统,在右边双击”显示关机事件跟踪“,设置为 已禁用。

    5.禁用开机 CTRL+ALT+DEL和实现自动登陆
    控制面板 -> 管理工具 -> 本地安全策略 -> 本地策略 -> 安全选项 -> 交互式登陆: 不需要按 CTRL+ALT+DEL,设置为 已启用。。
    开始 -> 运行 -> 键入“control userpasswords2”并回车,取消“使用本机,用户必须输入用户名和密码” 点击“确定”后再输入一次登陆的密码。

    6.需要启用XP的主题的
    开始 -> 运行 -> 键入“services.msc”并回车,打开服务,双击右边服务列表中的"themes",然后在"启动类型"的下拉菜单中选择"自动",并点击“应用” -> “启动” -> “确定”。接着点“桌面”的属性,在“主题”里选“windows xp”。
     
    7.需要系统自带CD刻录服务的
    开始 -> 运行 -> 键入“services.msc”并回车,打开服务,双击右边服务列表中的"IMAPI CD-Burning COM Service",然后在"启动类型"的下拉菜单中选择"自动",并点击“应用” -> “启动” -> “确定”。
    8.需要用扫描仪和数码相机图像捕获服务的

    开始 -> 运行 -> 键入“services.msc”并回车,打开服务,双击右边服务列表中的"Windows Image Acquisition (WIA)",然后在"启动类型"的下拉菜单中选择"自动",并点击“应用” -> “启动” -> “确定”。

    9.禁用错误报告
    右键点击我的电脑 -> 属性 -> 高级 -> 点击“错误报告”(Error Reporting )按钮,在出现的窗口中把“禁用错误报告”选上并复选“但在发生严重错误时通知我”。

    10.调整虚拟内存
    一些朋友经常会对关机和注销缓慢感到束手无策,解决办法就是禁用虚拟内存,这样你的注销和关机时间可能会加快很多。
    右键点击我的电脑 -> 属性 -> 高级 -> 性能 -> 设置 -> 高级,点击“虚拟内存”部分的“更改”,然后在出现的窗口选择“无分页文件”。重启系统即可。

    11.禁用系统服务Qos
    开始 -> 运行 -> 键入“gpedit.msc”并回车,展开计算机配置 -> 管理模板 -> 网络 -> QoS 数据包调度程序,在右边双击”限制可保留带宽“,设置为 已禁用。

    12.禁止系统自带zip压缩功能
    开始 -> 运行 -> 键入“regsvr32 /u zipfldr.dll”回车即可。

    13.为显示提速
    右键点击桌面 -> 属性 -> 外观 -> 效果,去掉所有的选项。并关闭“桌面墙纸”和“屏幕保护”。

    14.优化资源管理器
    双击我的电脑 -> 工具 -> 文件夹选项 -> 常规,选择“使用Windows 传统风格的文件夹”;在”查看“中去除“隐藏受保护的操作系统文件”和“隐藏己知文件类型的扩展名”之外所有的选项;“查看”中使用“列表”形式,以最小的图标和信息显示内容。

    15.关掉自动更新
    右键点击我的电脑 -> 属性 -> 自动更新,选择“关闭自动最新”。让我们养成自己定时更新的好习惯,可以让大家避免再受到“冲击波”之类的病毒袭击。

    16.关闭远程协助
    右键点击我的电脑 -> 属性 -> 远程,把远程协助全部关掉,避免不必要的麻烦。
     
    17.启用声卡
    控制面板 -> 声音 -> 启用,重启之后再设置它在任务栏显示。
     
    18.启用音频加速 
    开始 -> 运行 -> 键入“dxdiag”并回车,打开“DirectX 诊断工具”,在“声音”页面中,把”硬件的声音加速级别“拖动到全部。

    19.隐藏文件
    Win2003默认是显示所有文件夹的,可以设法来隐藏。打开我的电脑 -> 工具 -> 文件夹选项 -> 查看,不显示隐藏文件和文件夹。

    0.取消不小心按到关机键,关机的问题
    桌面右键 -> 属性 -> 屏幕保护程序 -> 电源 -> 高级 -> 在电源按钮中的两个下拉菜单都选择“不采取任何措施”。
     
    21.键盘速度
    控制面板 -> 键盘,把“重复延迟”和“重复速度”都拉到右边,文字编辑的时候立即见功。
     
    22.关掉系统提示音
    控制面板 -> 声音和音频设备 -> 声音,按“删除”,把现有的声音方案全部删掉,让耳根清净之余,系统性能马上增加。

    23.关闭Internet Explorer的增强安全配置
    控制面板 -> 添加或删除程序 -> 添加或删除Windows组件,卸载“Internet Explorer增强的安全配置”。

    24.IE7.0的优化
    Internet选项 -> 常规,主页使用空白页。
    Internet选项 -> 高级 -> 多媒体,去掉“启用自动图像大小调整”,直接显示整幅图像,减少IE的工作量。 Internet选项 -> 高级 -> 浏览,去掉“显示增强的安全配置对话框”;去掉“使用平滑滚动”;去掉“下载完成后发出通知”;去掉“自动检查Internet Explorer更新”。

    25.禁用Dr.Watson调试程序
    开始 -> 运行 -> 键入“drwtsn32”并回车,把除了“转储全部线程上下文”之外的全都去掉,否则一旦有程序出错,硬盘会响很久,而且会占用很多硬盘空间。
     
    26.关闭光驱自动播放
    开始 -> 运行 -> 键入“gpedit.msc”并回车,展开计算机配置 -> 管理模板 -> 系统,在右边双击”关闭自动播放“,设置为 已启用。

    26.关闭通过网络搜索驱动程序的提示
    开始 -> 运行 -> 键入“gpedit.msc”并回车,展开计算机配置 -> 管理模板 -> 系统,在右边双击”关闭Windows Update设备驱动程序搜索提示“,设置为 已启用。

    27.取消启动时写入调试信息
    右键点击我的电脑 -> 属性 -> 高级 -> 启动和故障恢复 -> 设置,在“系统失败”下的写入调试信息下拉选框中选中“无”,然后确定。
     

    28.注册表优化
    开始 -> 运行 -> 键入“regedit”并回车。
    找到HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics子键分支,
    将右边视窗的MinAniMate键值,默认情况下此健值的值为1,表示打开窗口显示的动画,

    改为0,则禁止动画显示。
     
    找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters,
    将右边视窗的EnablePrefetcher键值,改为1。
      
    找到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control,
    将右边视窗的WaitToKillServiceTimeout键值,改为:1000或更小。
     
    找到HKEY_CURRENT_USER\Control Panel\Desktop,
    将右边视窗的MenuShowDelay键值,改为0,即菜单显示速度等待0秒,调整后如觉得菜单显示速度太快而不适应者可将此值适当增加。
    将右边视窗的WaitToKillAppTimeout键值,改为1000,即关闭程序时仅等待1秒。
    将右边视窗的HungAppTimeout键值,改为200,表示程序出错时等待0.5秒。
    将右边视窗的AutoEndTasks键值,改为1,表示让系统自动关闭停止回应的程式。

    找到HKEY_LOCAL_MACHINE\SOFTWARE\MicROSoft\Windows\CurrentVersion\Explorer,
    在右边视窗新建一个DWORD值的AlwaysUnloadDLL键,改为1,表示卸载内存无用的动态连接。

    找到HKEY_LOCAL_MACHINE\SOFTWARE\MicROSoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders,
    在右边视窗新建一个DWORD值的AlwaysUnloadDLL键,改为1,表示卸载内存无用的动态连接。

     
    找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Update,
    将右边视窗的UpdateMode键值,改为0,表示让系统加快自动刷新率。

    找到HKEY_USERS\.DEFAULT\Control Panel\Desktop,
    将右边视窗的AutoEndTasks键值,改为1,表示关机时自动关闭停止响应程序。
     
    找到HKEY_LOCAL_MACHINE\SOFTWARE\MicROSoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace,
    将右边视窗的{D6277990-4C6A-11CF-8D87-00AA0060F5BF}删掉,这样可以加速共享查看。
     
    找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa,
    将右边视窗的restrictanonymous键值,改为1,表示禁用IPC连接。

    找到HKEY_LOCAL_MACHINE\SOFTWARE\MicROSoft\Windows NT\CurrentVersion\AeDebug,
    将右边视窗的Auto键值,改为0,表示取消Dr.Watson自动保存调试信息。
     
    找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management,
    将右边视窗的ClearPageFileAtShutdown键值,改为1,表示关机时会自动整理页面文件,可提高系统启动速度。
    将右边视窗的DisablePagingExecutive键值,改为1,表示禁止内存页面文件调度。
    将右边视窗的LargeSystemCache键值,改为1,表示提升系统缓存。
    在右边视窗新建一个DWORD值的IOPageLockLimit键,改为8000,表示提升系统进行大容量文件传输时的性能。

    找到HKEY_CURRENT_USER\Console,
    删除右边视窗的{59031a47-3f72-44a7-89c5-5595fe6b30ee}键值,改为0,表示我的电脑中的共享文件夹。

     

    下面我们来给系统减肥!

     

    以下需要删除的文件,请直接在开始 ->运行里输入地址直接转到。因为很多的文件夹都时隐藏的。

    1、删除C:\Documents and Settings\用户名\Local Settings\Temp中所有文件。(用户临时文件)

    2、删除C:\Documents and Settings\用户名\Cookies文件夹中所有.txt文件。(保留的用户Cookies文件)

    3、删除C:\Documents and Settings\用户名\Local Settings\Temporary Internet Files\中所有文件。(页面文件)

    4、删除C:\Documents and Settings\用户名\Local Settings\History\中所有文件。(历史纪录)

    5、删除C:\Documents and Settings\用户名\Recent\中所有文件。(最近浏览文件的快捷方式)

    6、删除C:\WINDOWS\Web\Wallpaper\中所有文件。(桌面背景图片)

    7、删除C:\WINDOWS\SoftwareDistribution\Download\中所有文件。

    8、删除C:\WINDOWS\ServicePackFiles\文件夹中的i386文件夹。(升级sp1或sp2后的备份文件)

    9、删除C:\WINDOWS\Driver Cache\i386\中的压缩文件。(驱动程序的备份文件)

    10、删除C:\WINDOWS\PCHEALTH\ERRORREP\UserDumps\中所有文件。

    11、删除C:\WINDOWS\下的$开头的所有隐藏文件夹。

    12、删除C:\WINDOWS\Temp\中所有文件。(临时文件)

    13、删除C:\WINDOWS\SoftwareDistribution\Download\中所有文件。

    14、删除C:\windows\system32\dllcache\中所有dll文件。(备用的dll文件)

    15、删除C:\Windows\inf\中所有pnf文件。(预编译文件)

    16、删除C:\Wndows\help\中所有文件。(windows帮助文件,删除吧没用的)

    17、在安全模式下,删除C:\Windows\ime\目录下的chtime、chtime、imejp、imjp8_1、imkr6_1文件夹。(删除不用的输入法)

    18、右键点击我的文档 -> 选择目标文件夹 -> 移动 -> 确定;

    19、开始 -> 运行 -> 键入“SFC.exe /purgecache”并回车。(清除“Windows 文件保护”文件缓存)

    20、开始 -> 运行 -> 键入“RunDll32 advpack.dll,LaunchINFSection %Windir%\inf\msmsgs.inf,BLC.Remove”并回车。(卸载 Windows Messenger)

    21、开始 -> 运行 -> 键入“rundll32.exe setupapi,InstallHinfSection NetMtg.Remove 132 msnetmtg.inf”并回车。(卸载 NetMeeting)

    22、禁止索引文件的产生
    打开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters,右侧窗口中的“EnablePrefetcher”键值项,改为2。
    新建一个记事本,在其中输入以下内容:del %SystemRoot%\Prefetch\*.* /q,并将其保存为delpf.bat文件。放在C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Shutdown\目录中。
    单击“开始”→“运行”,输入“gpedit.msc”启动组策略窗口,然后依次展开“计算机配置“→”“Windows设置”→“脚本”,双击右侧窗格中的“关机”选项,进入到关机属性对话框。点击“添加”按钮,将刚才建立的delpf.bat文件添加至关机任务中。这样,每次关机时Prefetch文件夹都会被自动清空,下次系统启动时便不需要进行预读取操作,速度当然如飞了!

    23、卸载不常用组件
    操作系统默认安装了一些系统组件,而这些组件有很大一部分是你根本不可能用到的,可以在"添加/删除Windows组件"中将它们卸载。但其中有一些组件系统默认是隐藏的,在"添加/删除Windows 组件"中找不到它们,这时可以这样操作:用记事本打开C:\Windows\inf\sysoc.inf这个文件,用查找/替换功能把文件中的"hide"字符全部替换为空。这样,就把所有组件的隐藏属性都去掉了,存盘退出后再运行"添加-删除程序",就会看见多出不少你原来看不见的选项,把其中那些你用不到的组件删掉,如Internat信使服务、传真服务、Windows messenger,码表等。


    24、关掉不用的设备
    系统总是旧能为电脑的所有设备安装驱动程序并进行管理,这不仅会减慢系统启动的速度,同时也造成了系统资源的大量占用。针对这一情况,你可在 设备管理器中,将PCMCIA卡、

    调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,方法是双击要停用的设备,在其属性对话框中的"常规"选项卡中选择"不要使用这个设备(停用)"。在重新启动设置即可生效,当需要使用这些设备时再从设备管理器中启用它们。


    25、删除“添加/删除程序”中的垃圾信息
    通过“控制面板”中的“添加/删除程序”卸载某个应用程序,但有时卸载之后程序还在列表中,日积月累垃圾信息越来越多。删除方法:打开HKEY_LOCAL_MacHINE/SoftwareMicROSoft/Windows/CurrentVersion/Uninstall,右侧窗口中将显示出“添加/删除程序”中的所有项目,选中垃圾信息项目,右键单击该值,在弹出的菜单中选择“删除”命令即可

    26、删除右键菜单中的垃圾信息
    有一种新的源码,是在右键菜单中把自己的网站名字加上,在你用右键的时候就会出现在弹出的菜单中,虽然不影响使用,但长长的右键菜单也有碍雅观。删除的办法是:打开HKEY_CURRENT_USER\Software\MicROSoft\Internet Explorer\MenuExt,删除其中令人讨厌的网址,右键就不会再出现那些网站的名字了。

    27、删除系统启动时运行的程序
    打开HKLM\SOFTWARE\MicROSoft\Windows\CurrentVersion\Run右侧窗口中将显示Windows启动时运行的所有程序。这里没有一个程序对Windows来说是生死悠关的,所以放心大胆地把不要的去掉。Windows启动会快些,同时空闲的系统资源也会多出一些。

    28、清除多余的窗口配色方案
    HKEY_CURRENT_USER\Control Panel\Appearance\Schemes\
    保留“Windows 标准(默认)”即可。

    29、删除多余的鼠标外观
    HKEY_LOCAL_MACHINE\SOFTWARE\MicROSoft\Windows\CurrentVersion\Control Panel\Cursors\Schemes\
    保留 Windows 默认

    30、删除多余的世界时区
    HKEY_LOCAL_MACHINE\Software\MicROSoft\Windows NT\CurrentVersion\Time Zones\
    保留“北京时间”删除其余的时区设置。

    31、清除多余国家列表
    HKEY_LOCAL_MACHINE\Software\MicROSoft\Windows\CurrentVersion\Telephony\Country List\
    保留“86 中国”删除多余的国家代码。

    32、删除多余的区域设置
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale\
    保留“英文:00000409 /中文:00000804”键值。

    33、删除多余的键盘布局
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard

    Layout\DosKeybCodes
    保留“英文:00000409 /中文:00000804”键值。

     

    下面再来做.服务优化

       系统中有很多服务,有很多是普通用户很少用到的。关闭不需要的服务,可以节省更多的系统资源,并让电脑运行的更顺畅。这在低配置的机器上非常有效。如果你的系统中没有下文中提到的某些服务也不用担心,因为某些服务只有在特定状态下或安装了某些软硬件之后才会出现。

    A:

    显示名称:Alerter
    进程名称:
    svchost.exe -k LocalService
    微软描述:通知所选用户和计算机有关系统管理级警报。如果服务停止,使用管理警报的程序将不会受到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。

    补充说明:警报器。该服务进程名为Services.exe,一般家用计算机根本不需要传送或接收计算机系统管理来的警示(Administrative Alerts),除非你的计算机用在局域网络上。

    依赖本项的服务:
    Workstation
    默认:禁用

    设置建议:非局域网用户禁用

    显示名称:Application Layer Gateway Service
    进程名称:
    alg.exe
    微软描述:为 Internet连接共享和Windows防火墙提供第三方协议插件的支持。

    补充说明:XP SP2自带的防火墙。如果不使用因特网联机共享 (ICS) 提供多台计算机的因特网存取和因特网联机防火墙 (ICF) 软件你可以关掉

    依赖本项的服务:
    Internt Connection Firewall (ICF) / Internet Connection Sharing (ICS)
    默认:手动

    设置建议:使用第三方防火墙者禁用

    显示名称:Application Management
    进程名称:
    svchost.exe -k netsvcs
    微软描述:提供软件安装服务,诸如分派,发行以及删除。

    补充说明:应用程序管理。从Windows2000开始引入的一种基于msi文件格式的全新有效软件管理方案:程序管理组件服务。该服务不仅可以管理软件的安装、删除,还可以使用此服务修改、修复现有应用程序,监视文件复原并通过复原排除基本故障等,软件安装变更的服务。

    默认:手动

    设置建议:手动

    显示名称:Automatic Updates
    进程名称:svchost.exe -k netsvcs
    微软描述:允许下载并安装Windows更新。如果此服务被禁用,计算机将不能使用Windows

    Update网站的自动更新功能。
    补充说明:自动更新,手动就行,需要的时候打开,没必要随时开着。不过2005年4月12日以后微软将对没有安装SP2的WindowsXP操作系统强制安装系统补丁SP2。

    默认:自动

    设置建议:手动。自己管理Update的禁用,用时打开。

    B:

    显示名称:Background Intelligent Transfer Service
    微软描述: 使用闲置的网络频宽来传输数据。

    补充说明:微软宣称BITS能够利用剩余的带宽传输文件,当网络切断或计算机需重启时,后台智能传输服务会自动对文件传输加以维护,当网络重新连接时,后台智能传输服务将继续从停止的地方继续开始传输文件。其实这个服务原是用来实现HTTP 1.1服务器之间的信息传输,基本上它的应用也就是支持Windows自动更新时的断点续传。
    依赖本项的服务: Remote Procedure Call (RPC) 和
    Workstation
    建议: 禁用
    .
    显示名称:
    ClipBook
    进程名称:
    clipsrv.exe
    微软描述:启用“剪贴簿查看器”储存信息并与远程计算机共享。如果此服务终止,“剪贴簿查看器”将无法与远程计算机共享信息。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:剪贴簿。把剪贴簿内的信息和其它台计算机分享,一般家用计算机根本用不到。

    依赖本项的服务:
    Network DDE
    默认:禁用

    设置建议:禁用

    显示名称:COM+EVEnt System (COM+ 事件系统)
    进程名称:
    svchost.exe -k netsvcs
    微软描述:支持系统事件通知服务(SENS),此服务为订阅组件对象模型(COM)组件事件提供自动分布功能。如果停止此服务,SENS将关闭,而且不能提供登录和注销通知。如果禁用此服务,显式依赖此服务的其他服务将无法启动。

    补充说明:COM+事件系统。有些程序可能用到COM+组件,如自己的系统优化工具BootVis。检查系统盘的目录“C:\Program Files\ComPlus Applications”,没东西可以把这个服务关闭。

    依赖本项的服务:Remote Procedure Call (RPC) 和
    System EVEnt Notification
    默认:手动
    设置建议:手动

    显示名称:COM+ System Application
    进程名称:dllhost.exe /Processid:{02D4B3F1-FD88-11D1-960D-00805FC79235}
    微软描述:管理基于COM+组件的配置和跟踪。如果服务停止,大多数基于COM+组件将不能正常工作。如果本服务被禁用,任何明确依赖它的服务都将不能启动。

     

    补充说明:如果COM+EVEnt System是一台车,那么COM+ SystemApplication就是司机,如事件检视器内显示的DCOM没有启用,则会导致一些COM+软件无法正常运行。检查系统盘的目录“C:\Program Files\ComPlus Applications”,没东西可以把这个服务关闭。
    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:手动

    显示名称:Computer Browser (计算机浏览器)
    进程名称:
    svchost.exe -k netsvcs
    微软描述:维护网络上计算机的更新列表,并将列表提供给计算机指定浏览。如果服务停止,列表不会被更新或维护。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。

    补充说明:计算机浏览器。一般家庭用计算机不需要,除非你的计算机应用在局域网之上。

    依赖本项的服务:Server 和
    Workstation
    默认:自动

    设置建议:手动。非局域网用户禁用。

    显示名称:Cryptographic Services
    进程名称:
    svchost.exe -k netsvcs
    微软描述:提供三种管理服务:编录数据库服务,它确定Windows文件的签字;受保护的根服务,它从此计算机添加和删除受信根证书机构的证书;和密钥(Key)服务,它帮助注册此计算机获取证书。如果此服务被终止,这些管理服务将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:简单的说就是Windows Hardware Quality Lab (WHQL)微软的一种认证服务,例如你使用Automatic Updates,升级驱动程序,你就会需要这个。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:自动

    D

    显示名称:DCOM Server Process Launcher
    进程名称:
    svchost -k DcomLaunch
    微软描述:为DCOM服务提供加载功能。

    补充说明:SP2新增的服务,DCOM(分布式组件对象模式)服务器进程启动器,关闭这个服务会造成很多手动服务无法在需要的时候自动启动,很麻烦。

    关闭这个服务还有以下现象:比如一些软件无法正常安装,flashmx,还有些打印机的驱动无法安装,都提示错误“RPC服务器不可用”。

    依赖本项的服务:无

    默认:自动

    设置建议:自动

    显示名称:DHCP Client
    进程名称:
    svchost.exe -k netsvcs
    微软描述:通过注册和更改IP地址以及DNS名称来管理网络配置。

    补充说明:DHCP客户端。没有固定IP的的用户还是开着吧,否则上不了网,特别是小区光纤用户。

    依赖本项的服务:AFD 网络支持环境、NetBT、SYMTDI、TCP/IP Protocol Driver 和
    NetBios over TCP/IP
    默认:自动

    设置建议:自动

    显示名称:Distributed Link Tracking Client (分布式连结追踪客户端)
    进程名称:
    svchost.exe -k netsvcs
    微软描述:在计算机内NTFS文件之间保持链接或在网络域中的计算机之间保持链接。

    补充说明:分布式连结追踪客户端。用于局域网更新连接信息,比如在电脑A有个文件,在B做了个连接,如果文件移动了,这个服务将会更新信息。对于绝大多数用户来说,形同虚设,可以关闭,特殊用户除外。占用4兆内存。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:禁用

    显示名称:Distributed Transaction Coordinator
    进程名称:
    msdtc.exe
    微软描述:协调跨多个数据库、消息队列、文件系统等资源管理器的事务。如果停止此服务,则不会发生这些事务。如果禁用此服务,显式依赖此服务的其他服务将无法启动。

    补充说明:分布式交换协调器。一般家庭用计算机用不太到,除非你启用的Message Queuing。

    依赖本项的服务:Remote Procedure Call (RPC) 和
    Security Accounts Manager
    默认:手动

    设置建议:禁用

    显示名称:DNS Client
    进程名称:
    svchost.exe -k NetworkService
    微软描述:为此计算机解析和缓冲域名系统(DNS)名称。如果此服务被停止,计算机将不能解析DNS名称并定位Active Directory域控制器。如果此服务被禁用,任何明确依赖它的服务将不能启动。

    补充说明:DNS集中解析客户端。关闭后DNS解析会转移到各进程,因此想节省资源可手动甚至禁用。注意:IPSEC需要用到。

    依赖本项的服务:
    TCP/IP Protocol Driver
    默认:自动

    设置建议:手动

    显示名称:Error Reporting Service
    进程名称:
    svchost.exe -k netsvcs
    微软描述:服务和应用程序在非标准环境下运行时允许错误报告。

    补充说明:微软的应用程序错误报告服务,对于大多数用户来说也没什么用处。这个服务每当在在使用微软的软件时如果发生了错误,系统会自动将错误代码作为一个备份文件,并且询问你是否要把文件发送至微软以寻求帮助?由于普通用户与微软总部联系的机会实在是很少
    .
    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:禁用

    显示名称:EVEnt Log (事件记录文件)
    进程名称:
    services.exe
    微软描述:启用在事件查看器查看基于Windows的程序和组件颁发的事件日志消息。无法终止此服务。

    补充说明:事件查看器。允许事件讯息显示在事件检视器之上。

    依赖本项的服务:
    Windows Management Instrumentation
    默认:自动

    设置建议:自动

    F

    显示名称:Fast User Switching Compatibility
    进程名称:
    svchost.exe -k netsvcs
    微软描述:为在多用户下需要协助的应用程序提供管理。

    补充说明:另外像是注销画面中的切换使用者功能,一般建议采用默认手动,否则可能很多功能无法实现。如果你基于安全性考虑,并且不使用多用户环境,可以停止。

    依赖本项的服务:
    Terminal Services
    默认:手动

    设置建议:手动。不使用多用户者禁用。

    H

    显示名称:Help and Support
    进程名称:
    svchost.exe -k netsvcs
    微软描述:启用在此计算机上运行帮助和支持中心。如果停止服务,帮助和支持中心将不可用。如果禁用服务,任何直接依赖于此服务的服务将无法启动。

    补充说明:如果不使用就关了吧,现实中证明没有多少人需要它,除非有特别需求,否则建议停用。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:手动。根本不使用帮助的高手可禁用。

    显示名称:HTTP SSL
    进程名称:
    svchost.exe -k HTTPFilter
    微软描述:此服务通过安全套接字层(SSL)实现HTTP服务的安全超文本传送协议(HTTPS)。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:SP2新增的服务,默认就是手动,实际使用中也没见它启动过,就不要管它了!

    默认:手动

    设置建议:手动

    显示名称:Human Interface Device Access
    进程名称:
    svchost.exe -k netsvcs
    微软描述:启用对智能界面设备(HID)的通用输入访问,它激活并保存键盘、远程控制和其它多媒体设备上的预先定义的热按钮。如果此服务被终止,由此服务控制的热按钮将不再运行。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:如果没有什么HID装置,可以停用。比如键盘上调音量的按钮就属于智能界面设备。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:禁用

    设置建议:禁用

    显示名称:IMAPI CD-Burning COM Service
    进程名称:
    imapi.exe
    微软描述:用Image Mastering Applications Programming Interface(IMAPI)管理CD录制。如果停止该服务,这台计算机将无法录制CD。如果该服务被停用,任何依靠它的服务都无法启动。

    补充说明:XP整合的CD-R和CD-RW光驱上拖放的烧录功能,可惜比不上烧录软件,关掉还可以加快Nero的开启速度,如果习惯使用第三方软件或者根本没有刻录机,那就停用。占用1.6兆内存。

    默认:手动

    设置建议:禁用

    显示名称:Indexing Service (索引服务)
    进程名称:
    cisvc.exe
    微软描述:本地和远程计算机上文件的索引内容和属性;通过灵活查询语言提供文件快速访问。

    补充说明:索引服务。简单的说可以让你加快搜查速度,不过我想应该很少人和远程计算机作搜寻吧,除非特殊工作。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:禁用

    显示名称:Internet Connection - Firewall (ICF) / Sharing (ICS)
    进程名称:svchost.exe

    微软描述:为家庭和小型办公网络提供网络地址转换、寻址、名称解析和/或入侵保护服务。
    补充说明:在SP2中已经被Windows Firewall/Internet Connection Sharing (ICS)取代。

    依赖本项的服务:Application Layer Gateway Service、Network Connections、Network Location Awareness(NLA)、
    Remote Access Connection Manager
    默认:手动

    设置建议:不做家庭多机网络者禁用

    显示名称:IPSEC Services (IP 安全性服务)
    进程名称:
    lsass.exe
    微软描述:管理IP安全策略以及启动ISAKMP/Oakley(IKE)和IP安全驱动程序。

    补充说明:IP安全性服务。协助保护经由网络传送的数据。IPSec为一重要环节,为虚拟私人网络(VPN)中提供安全性,而VPN允许组织经由因特网安全地传输数据。在某些网域上也许需要,但是一般使用者大部分是不太需要的,可停止。

    依赖本项的服务:IPSEC driver、Remote Procedure Call (RPC)、
    TCP/IP Protocol Driver
    默认:自动

    设置建议:手动

    L

    显示名称:Logical Disk Manager (逻辑磁盘管理员)
    进程名称:
    svchost.exe -k netsvcs
    微软描述:监测和监视新硬盘驱动器并向逻辑磁盘管理器管理服务发送卷的信息以便配置。如果此服务被终止,动态磁盘状态和配置信息会过时。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:逻辑磁盘管理员。磁盘管理员用来动态管理磁盘,如显示磁盘可用空间等和使用MicROSoft Management Console(MMC)主控台的功能,该服务对于经常使用移动硬盘、闪盘等外设的用户必不可少,根据具体情况。改为手动后需要时它会通知你。

    依赖本项的服务:Plug and Play、Remote Procedure Call (RPC)、
    Logical Disk Manager Administrative Service
    默认:自动

    设置建议:自动

    显示名称:Logical Disk Manager Administrative Service (逻辑磁盘管理员系统管理服务)
    进程名称:
    dmadmin.exe /com
    微软描述:配置硬盘驱动器和卷。此服务只为配置处理运行,然后终止。

    补充说明:逻辑磁盘管理员系统管理服务。使用MicROSoft Management Console(MMC)主控台的功能时才用到。磁盘管理服务。需要时它会通知你,所以一般手动。

    依赖本项的服务:Plug and Play、Remote Procedure Call (RPC)、
    Logical Disk Manager
    默认:手动

    设置建议:手动

    显示名称:Machine Debug Manager Service
    进程名称:
    mdm.exe
    微软描述:支持对Visual Studio和脚本调试器进行本地和远程调试。如果该服务停止,调试器将不能正常工作。

    补充说明:对于开发人员使用的脚本调试器,一般不需要。

    默认:手动

    设置建议:手动

    显示名称:Messenger
    进程名称:
    svchost.exe -k netsvcs
    微软描述:传输客户端和服务器之间的NET SEND和Alerter服务消息。此服务与Windows Messenger无关。如果服务停止,Alerter消息不会被传输。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。

    补充说明:信使服务。允许网络之间互相传送提示信息的功能,net send功能,如不想被骚扰话可关了。

    依赖本项的服务:NetBIOS Interface、Plug and Play、Remote Procedure Call (RPC)、
    Workstation
    默认:禁用

    设置建议:禁用

    显示名称:MS Software Shadow Copy Provider
    进程名称:
    dllhost.exe /Processid:{ED4B06E8-12C4-4351-BA07-2B43EB72B786}
    微软描述:管理卷影复制服务拍摄的软件卷影复制。如果该服务被停止,软件卷影复制将无法管理。如果该服务被停用,任何依赖它的服务将无法启动。

    补充说明:如上所说的,用来备份的东西,如MS Backup程序就需要这个服务,但是大多数人用不到这个功能。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:禁用

    N

    显示名称:Net Logon
    进程名称:
    lsass.exe
    微软描述:支持网络上计算机 pass-through帐户登录身份验证事件。

    补充说明:一般家用计算机不太可能去用到登入网络审查这个服务。登陆Domain Controller用的,大众用户快关。如果要使用网内的域服务器登录到域时,启动。

    依赖本项的服务:
    Workstation
    默认:手动

    设置建议:禁用

    显示名称:NetMeeting Remote Desktop Sharing
    进程名称:mnmsrvc.exe

    微软描述:使授权用户能够通过使用NetMeeting跨企业intranet远程访问此计算机。如果此服务被停用,远程桌面服务将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。
    补充说明:NetMeeting远程桌面共享。让使用者可以将计算机的控制权分享予网络上或因特网上的其它使用者,用NetMeeting实现电脑共享。如果你重视安全性,就关。

    默认:手动

    设置建议:禁用,除非你需要远程桌面求助或帮助别人。

    显示名称:Network Connections
    进程名称:
    svchost.exe -k netsvcs
    微软描述:管理“网络和拨号连接”文件夹中对象,在其中您可以查看局域网和远程连接。

    补充说明:网络连接。控制你的网络连接,因特网、局域网要用的东东。关了就看不见网络连接了,不过需要的时候可以随时打开,不影响上网!

    依赖本项的服务:Remote Procedure Call (RPC)、
    Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
    默认:手动

    设置建议:手动

    显示名称:Network DDE
    进程名称:
    netdde.exe
    微软描述:为在同一台计算机或不同计算机上运行的程序提供动态数据交换(DDE)的网络传输和安全。如果此服务被终止,DDE传输和安全将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:网络DDE。一般人好像用不到。

    依赖本项的服务:Network DDE DSDM、
    ClipBook
    默认:禁用

    设置建议:禁用

    显示名称:Network DDE DSDM
    进程名称:
    netdde.exe
    微软描述:管理动态数据交换(DDE)网络共享。如果此服务终止,DDE网络共享将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:网络DDE DSDM。一般好像用不到。

    依赖本项的服务:
    Network DDE
    默认:禁用

    设置建议:禁用

    显示名称:Network Location Awareness (NLA)
    进程名称:
    svchost.exe -k netsvcs
    微软描述:收集并保存网络配置和位置信息,并在信息改动时通知应用程序。

    补充说明:如果不使用ICF和ICS可以关了它。如有网络共享或ICS/ICF可能需要(服务器端)。对于移动办公用户,启动。

    依赖本项的服务:AFD网络支持环境、TCP/IP Procotol Driver、
    Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
    默认:手动

    设置建议:禁用

    显示名称:Network Provisioning Service
    进程名称:
    svchost.exe -k netsvcs
    微软描述:为自动网络提供管理基于域的XML配置文件。

    补充说明:

    默认:手动

    设置建议:手动

    显示名称:NT LM Security Support Provider
    进程名称:
    lsass.exe
    微软描述:为使用传输协议而不是命名管道的远程过程调用(RPC)程序提供安全机制。

    补充说明:NTLM安全性支持提供者。如果不使用Message Queuing或是Telnet Server那就关了它,一般用户也用不上。

    依赖本项的服务:
    Telnet
    默认:手动

    设置建议:禁用

     
    P

    显示名称:Performance Logs and Alerts
    进程名称:
    smlogsvc.exe
    微软描述:收集本地或远程计算机基于预先配置的日程参数的性能数据,然后将此数据写入日志或触发警报。如果此服务被终止,将不会收集性能信息。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:性能记录文件及警示。记录机器运行状况而且定时写入日志或发警告,内容比较专业,效果不佳可以不用。

    默认:手动

    设置建议:禁用

    显示名称:Plug and Play
    进程名称:
    services.exe
    微软描述:使计算机在极少或没有用户输入的情况下能识别并适应硬件的更改。终止或禁用此服务会造成系统不稳定。

    补充说明:即插即用。顾名思义就是PNP环境,一般计算机中都需要PNP环境的支持,所以不要关闭。

    依赖本项的服务:Logical Disk Manager、Logical Disk Manager Administrative Service、Messenger、Smart Card、Telephony、
    Windows Audio
    默认:自动

    设置建议:自动

    显示名称:Portable Media Serial Number Service
    进程名称:
    svchost.exe -k netsvcs
    微软描述:
    RetriEVEs the serial number of any portable media player connected to this computer. If this service is stopped, protected content might not be down loaded to the device.
    补充说明:WmdmPmSN(便携的媒体序号服务)。获得系统中媒体播放器的序列号,用于控制盗版音乐文件复制到便携播放器上,如MP3、MD等。该服务进程名为Svchost.exe。
    默认:手动

    设置建议:禁用

    显示名称:Print Spooler
    进程名称:
    spoolsv.exe
    微软描述:将文件加载到内存中以便迟后打印。

    补充说明:打印多任务缓冲处理器。可以优化打印,对于打印功能有一定的帮助,如果根本没有打印机,可以关了。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:无打印机者禁用

    显示名称:Protected Storage
    进程名称:
    lsass.exe
    微软描述:提供对敏感数据(如私钥)的保护性存储,以便防止未授权的服务,过程或用户对其的非法访问。

    补充说明:受保护的存放装置。用来储存你计算机上密码的服务,像Outlook、拨号程序、其它应用程序、主从架构等等。视具体使用环境而定,在不安全的环境下建议停止。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:手动

    Q

    显示名称:QoS RSVP
    进程名称:
    rsvp.exe
    微软描述:为依赖质量服务(QoS)的程序和控制应用程序提供网络信号和本地通信控制安装功能。

    补充说明:QoS许可控制,RSVP。用来保留20%带宽的服务,如果你的网卡不支持802.1p或在你计算机的网络上没有ACS server,那就不用多说了,关了它。

    依赖本项的服务:AFD网络支持环境、TCP/IP Procotol Driver、
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:禁用

    R

    显示名称:Remote Access Auto Connection Manager
    进程名称:
    svchost.exe -k netsvcs
    微软描述:无论什么时候当某个程序引用一个远程DNS或NetBIOS名或者地址就创建一个到远程网络的连接。

    补充说明:远程访问自动联机管理员。如果你的机器提供网络共享服务就启动它,以避免网络断线后手动连接,否则停止。另外有些DSL/Cable可能需要用此来处理登入程序。

    依赖本项的服务:Remote Access Connection Manager、
    Telephony
    默认:手动

    设置建议:手动

    显示名称:Remote Access Connection Manager
    进程名称:
    svchost.exe -k netsvcs
    微软描述:创建网络连接。

    补充说明:远程访问联机管理员。网络联机用

    依赖本项的服务:Telephony、Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)、
    Remote Access Auto Connection Manager
    默认:手动

    设置建议:手动

    显示名称:Remote Desktop Help Session Manager
    进程名称:
    sessmgr.exe
    微软描述:管理并控制远程协助。如果此服务被终止,远程协助将不可用。终止此服务前,请参见“属性”对话框上的“依存”选项卡。

    补充说明:远程桌面协助服务,用于管理和控制远程协助,,对于普通用户来说,用处不大,可以关闭。占用4兆内存。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:禁用,除非需要使用远程协助。

    显示名称:Remote Procedure Call (RPC)
    进程名称:
    svchost -k rpcss
    微软描述:提供终结点映射程序(endpoint mapper)以及其它RPC服务。

    补充说明:远程过程调用。系统级服务,别去动它!

    依赖本项的服务:太多了,自己去看看

    默认:自动

    设置建议:自动

    显示名称:Remote Procedure Call (RPC) Locator
    进程名称:
    locator.exe
    微软描述:管理RPC名称服务数据库。

    补充说明:远程过程调用定位程序。在一般计算机上很少用到,没什么特殊要求,可以尝试关了。

    依赖本项的服务:
    Workstation
    默认:手动

    设置建议:禁用

    显示名称:Remote Registry
    进程名称:
    svchost.exe -k LocalService
    微软描述:使远程用户能修改此计算机上的注册表设置。如果此服务被终止,只有此计算机上的用户才能修改注册表。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:远程登录注册表服务。允许远程用户在权限许可的情况下登录本机并修改注册表设置。一般而言,这项服务是很少用到的,而且给自己的计算机增加了不必要的危险,因此也把它设为禁止。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:禁用

    显示名称:Removable Storage
    进程名称:
    svchost.exe -k netsvcs
    微软描述:无

    补充说明:卸除式存放装置。除非你有Zip磁盘驱动器或是USB之类移动式的硬件或是Tape备份装置,不然可以尝试关了,现在的这方面的设备很多,建议保留。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:手动

    显示名称:Routing and Remote Access
    进程名称:
    svchost.exe -k netsvcs
    微软描述:在局域网以及广域网环境中为企业提供路由服务。

    补充说明:路由和远程访问提供拨号联机到网络或是VPN服务,一般用户用不到,可以关闭。

    依赖本项的服务:Remote Procedure Call (RPC)、
    NetBIOSGroup
    默认:禁用

    设置建议:禁用

    S

    显示名称:Secondary Logon
    进程名称:
    svchost.exe -k netsvcs
    微软描述:启用替换凭据下的启用进程。如果此服务被终止,此类型登录访问将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:Seclogon(二次登录服务)。在多用户使用的计算机上,某些用户因为是非管理员权限,导致某些程序无法执行。为了让没有管理员权限的已登录用户可以使用这个程序,WindowsXP设计了这个功能来分配临时的管理员权限。该服务进程名为svchost.exe。基于安全性考虑,停止。

    默认:自动

    设置建议:手动

    显示名称:Security Accounts Manager
    进程名称:
    lsass.exe
    微软描述:存储本地用户帐户的安全信息。

    补充说明:安全性账户管理员。管理账号和群组原则(gpedit.msc)应用。

    依赖本项的服务:Remote Procedure Call (RPC)、
    Distributed Transaction Coordinator
    默认:自动

    设置建议:自动

    显示名称:Security Center
    进程名称:
    svchost.exe -k netsvcs
    微软描述:监视系统安全设置和配置。

    补充说明:SP2的安全中心。

    默认:自动

    设置建议:禁用

    显示名称:Server
    进程名称:
    svchost.exe -k netsvcs
    微软描述:支持此计算机通过网络的文件、打印、和命名管道共享。如果服务停止,这些功能不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。

    补充说明:简单的说就是档案和打印的共享,除非你有和其它计算机共享,不然就关了。局域网文件/打印共享需要的。

    依赖本项的服务:
    Computer Browser
    默认:自动

    设置建议:禁用

    显示名称:Shell Hardware Detection
    进程名称:
    svchost.exe -k netsvcs
    微软描述:为自动播放硬件事件提供通知。

    补充说明:一般使用在移动存储或是CD装置、DVD装置上,可以关闭。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:禁用,除非希望保留自动播放功能。

    显示名称:Smart Card
    进程名称:
    SCardSvr.exe
    微软描述:管理此计算机对智能卡的取读访问。如果此服务被终止,此计算机将无法取读智能卡。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:智能卡。使得Windows XP可以支持智能卡设备,并管理PC与智能卡之间的存取。如果自己的计算机没有连接智能读卡器之类的外设,那就可以关了,占1.4兆内存。

    依赖本项的服务:
    Plug and Play
    默认:手动

    设置建议:无智能卡者禁用

    显示名称:Smart Card Helper
    进程名称:
    SCardSvr.exe
    微软描述:启用对此计算机使用的旧式(legacy)非即插即用智能卡读取器的支持。如果此服务被终止,此计算机将无法支持旧式取读器。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:智能卡。使得Windows XP可以支持智能卡设备,并管理PC与智能卡之间的存取。如果自己的计算机没有连接智能读卡器之类的外设,那就可以关了。

    默认:手动

    设置建议:无智能卡者禁用

    显示名称:SSDP Discovery Service
    进程名称:
    svchost.exe -k LocalService
    微软描述:启动您家庭多机网络上的UPnP设备的发现。

    补充说明:通用即插即用服务(Universal Plug and Play—UPnP)让计算机可以找到并使用网络上的装置,经由网络连接通过TCP/IP来搜索装置,像网络上的扫瞄器、数字相机或是打印机,都是使用UPnP的功能,基于安全性没用到的大可关了。不过现在数码设备很流行,需要的用户可以保留。

    依赖本项的服务:
    Universal Plug and Play Device Host
    默认:手动

    设置建议:无家庭多机网络者禁用

    显示名称:SystemEVEnt Notification
    进程名称:svchost.exe -k netsvcs
    微软描述:跟踪系统事件,如登录Windows,网络以及电源事件等。将这些事件通知给COM+事件系统“订阅者(subscriber)”。

    补充说明:系统事件通知。记录用户登录/注销/重起/关机信息(我知道这些有什么用?),不过对于服务器尤其重要。

    依赖本项的服务:
    COM+ EVEnt System
    默认:自动
    设置建议:自动

    显示名称:System Restore Service
    进程名称:
    svchost.exe -k netsvcs
    微软描述:执行系统还原功能。要停止服务,请从“我的电脑”的属性中的系统还原选项卡关闭系统还原

    补充说明:系统还原,因人而定,本人觉得比较浪费资源,可以关掉。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:禁用

     
    T

    显示名称:Task Scheduler
    进程名称:
    svchost.exe -k netsvcs
    微软描述:使用户能在此计算机上配置和制定自动任务的日程。如果此服务被终止,这些任务将无法在日程时间里运行。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:计划任务。设定自动的工作计划,像一些定时磁盘扫瞄、病毒定时扫瞄、更新等等,但是一般都很少用,可以关闭。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:手动

    显示名称:TCP/IP NetBIOS Helper
    进程名称:
    svchost.exe -k LocalService
    微软描述:允许对“TCP/IP 上 NetBIOS (NetBT)”服务以及NetBIOS名称解析的支持。

    补充说明:如果你的网络不使用NetBios或是WINS,你大可关闭,对于不太了解网络情况的用户建议保留,否则可能导致你的网络出现问题。

    依赖本项的服务:AFD 网络支持环境、
    NetBt
    默认:自动

    设置建议:自动

    显示名称:Telephony
    进程名称:
    svchost.exe -k netsvcs
    微软描述:提供TAPI的支持,以便程序控制本地计算机,服务器以及LAN上的电话设备和基于IP的语音连接。

    补充说明:一般的拨号调制解调器或是一些DSL/Cable可能用到。如果你的宽带不用拨号,那么关了它。

    依赖本项的服务:Plug and Play、Remote Procedure Call (RPC)、Remote Access Connection Manager、
    Remote Access Auto Connection Manager
    默认:手动

    设置建议:手动

    显示名称:Telnet
    进程名称:
    tlntsvr.exe
    微软描述:允许远程用户登录到此计算机并运行程序,并支持多种TCP/IPTelnet客户,包括基于UNIX和Windows的计算机。如果此服务停止,远程用户就不能访问程序,任何直接依靠它的服务将会启动失败。

    补充说明:允许远程用户用Telnet登入本计算机,一般人会误解关了就无法使用BBS,这其实和BBS无关,这跟dos中Telnet命令没关系,基于安全性的理由,如果没有特别的需求,建议最好关了2兆内存。

    依赖本项的服务:NT LM Security Support Provider、Remote Procedure Call (RPC)、
    TCP/IP Protocol Driver
    默认:禁用

    设置建议:禁用

    显示名称:Terminal Services
    进程名称:
    svchost -k DComLaunch
    微软描述:允许多位用户连接并控制一台机器,并且在远程计算机上显示桌面和应用程序。这是远程桌面(包括管理员的远程桌面)、快速用户转换、远程协助和终端服务器的基础结构。

    补充说明:远程桌面或是远程协助的功能,目前该服务也导致了很多网络服务器的安全性问题。个别服务需要此功能。实现远程登录本地电脑,快速用户切换和远程桌面功能需要,不用这些功能就关了吧。

    依赖本项的服务:Remote Procedure Call (RPC)、Fast User Switching Compatibility、
    InteractiveLogon
    默认:手动

    设置建议:禁用

    显示名称:Themes
    进程名称:
    svchost.exe -k netsvcs
    微软描述:为用户提供使用主题管理的经验。

    补充说明:番茄很多人使用桌面主题,打造个性化的系统,如果你没有使用,那就可以关闭。

    默认:自动

    设置建议:不使用桌面主题者禁用

    U

    显示名称:Uninterruptible Power Supply
    进程名称:
    ups.exe
    微软描述:管理连接到计算机的不间断电源(UPS)。

    补充说明:不间断电源供应(UPS)一般人有用到吗?除非你的电源供应器有具备此功能,不然就关了。

    默认:手动

    设置建议:禁用

    显示名称:Universal Plug and Play Device Host
    进程名称:
    svchost.exe -k LocalService
    微软描述:为主持通用即插即用设备提供支持。

    补充说明:用来侦测安装通用即插即用服务(Universal Plug and Play,UPnP)装置,像是数字相机或打印机,现在很多设备都需要这个。如果确定没有需要添加的外设,可以关闭。

    依赖本项的服务:
    SSDP Discovery Service
    默认:手动

    设置建议:手动

    V

    显示名称:Volume Shadow Copy
    进程名称:
    vssvc.exe
    微软描述:管理并执行用于备份和其它目的的卷影复制。如果此服务被终止,备份将没有卷影复制,并且备份会失败。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:用来实现服务器和客户端输送文件的服务,简单文件传输不需要这个,如MS Backup程序就需要这个服务。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:禁用

    显示名称:WebClient
    进程名称:
    svchost.exe -k LocalService
    微软描述:使基于Windows的程序能创建、访问和修改基于Internet的文件。如果此服务被终止,将会失去这些功能。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:使用WebDAV将档案或文件上载到所有的Web服务,基于安全性的理由,你可以尝试关闭,可能和以后的.net技术有联系,安全起见,可以关闭。

    依赖本项的服务:
    WebDav Client Redirector
    默认:自动

    设置建议:手动

    显示名称:Windows Audio
    进程名称:
    svchost.exe -k netsvcs
    微软描述:管理基于Windows的程序的音频设备。如果此服务被终止,音频设备及其音效将不能正常工作。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:关了就没声了,如果你没有声卡可以关了他,但是现在的个人电脑不会没有声卡吧?

    依赖本项的服务:Plug and Play、
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:自动

    W
    显示名称:Windows Firewall/Internet Connection Sharing (ICS)
    进程名称:
    svchost.exe -k netsvcs
    微软描述:为家庭和小型办公网络提供网络地址转换、寻址、名称解析和/或入侵保护服务。

    补充说明:这个就是SP2版本(包括SP2)以前的Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS),如果你不使用因特网联机共享(ICS)和防火墙,可以关掉。不过管理“网络和拨号连接”文件夹的服务(Network Connections)需要这个,如果关了,查看网络连接的时候需要手动开启。

    默认:自动

    设置建议:自动

    显示名称:Windows Image Acquisition (WIA)
    进程名称:
    svchost.exe -k imgsvc
    微软描述:为扫描仪和照相机提供图像捕获。

    补充说明:如果扫描仪和数字相机内部具有支持WIA功能的话,那就可以直接看到图档,不需要其它的驱动程序,所以没有扫描仪和数字相机的使用者大可关了。安装摄像头就会变成自动。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:手动

    显示名称:Windows Installer
    进程名称:
    msiexec.exe /V
    微软描述:添加、修改和删除以Windows安装程序(*.msi)的软件包提供的应用程序。如果禁用了此服务,任何完全依赖它的服务不会被启动。

    补充说明:是一个系统服务,协助使用者正确地安装、设定、追踪、升级和移除软件程序,可管理应用程序建立和安装的标准格式,并且追踪例如档案群组、登录项目及快捷方式等组件,很多软件的安装都需要用到这个服务,所以建议保留,否则会遇到很多麻烦的。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:手动

    显示名称:Windows Management Instrumentation
    进程名称:
    svchost.exe -k netsvcs
    微软描述:提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。如果此服务被终止,多数基于Windows的软件将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。

    补充说明:如上说的,是一种提供一个标准的基础结构来监视和管理系统资源的服务,由不得你动它。

    依赖本项的服务:EVEnt Log、
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:自动

    显示名称:Windows Management Instrumentation Driver Extensions
    进程名称:
    svchost.exe -k netsvcs
    微软描述:与驱动程序间交换系统管理信息。

    补充说明:Windows Management Instrumentation的驱动程序延伸,提供信息用的。

    默认:手动

    设置建议:手动

    显示名称:Windows Time
    进程名称:
    svchost.exe -k netsvcs
    微软描述:维护在网络上的所有客户端和服务器的时间和日期同步。如果此服务被停止,时间和日期的同步将不可用。如果此服务被禁用,任何明确依赖它的服务都将不能启动。

    补充说明:一周一次的网络对时校准,没有太大的意义,而且占有不少的资源,可以关闭。

    默认:自动

    设置建议:禁用,自己设定时间足够了

    显示名称:Wireless Zero Configuration
    进程名称:
    svchost.exe -k netsvcs
    微软描述:为您的802.11适配器提供自动配置

    补充说明:自动配置无线网络装置,言下之意就是说,除非你有在使用无线网络装置,那么你才有必要使用这个网络零管理服务,否则这个对你一点作用也没有。

    依赖本项的服务:NDIS Usermode I/O Protocol、
    Remote Procedure Call (RPC)
    默认:自动

    设置建议:禁用

    显示名称:WMI Performance Adapter
    进程名称:
    wmiapsrv.exe
    微软描述:从WMI HiPerf提供程序提供性能库信息。

    补充说明:对大多数用户没有太大作用。可以关闭,占用6兆内存。

    依赖本项的服务:
    Remote Procedure Call (RPC)
    默认:手动

    设置建议:禁用

    显示名称:Workstation
    进程名称:svchost.exe -k netsvcs
    微软描述:创建和维护到远程服务的客户端网络连接。如果服务停止,这些连接将不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。
    补充说明:是因特网连接中所必要的一些功能。
    依赖本项的服务:Alerter、Background Intelligent Transfer Service、Computer Browser、Messenger、Net Logon、Remote Procedure Call (RPC) Locator
    默认:自动
    设置建议:自动


    展开全文
  • Gcode命令

    千次阅读 2020-10-12 12:02:35
    Gcode命令 ... 简述 研究过3D打印机的朋友,都会用到G-code文件。要使用3D打印机打印东西要经过几个步骤: 1、创建3D模型 2、切片软件...而这些命令,也被称为G-code命令,是3D打印机电脑之间最重要的命令交互界面...

    Gcode命令

    https://www.jianshu.com/p/f8a328457a45

    简述

          研究过3D打印机的朋友,都会用到G-code文件。要使用3D打印机打印东西要经过几个步骤:        1、创建3D模型    2、切片软件处理,生成3D打印机能识别的命令(保存在G-code文件中)   3、发送打印命令给3D打印机

            Gcode文件中的每一行都是3D打印机固件所能理解的命令。而这些命令,也被称为G-code命令,是3D打印机和电脑之间最重要的命令交互界面。

            既然所有3D打印机都使用G-code作为对外联系的唯一信息交互方式,那么这种“语言”的标准就很重要了。不幸的是,虽然所有的3D打印机,都使用G-code作为与计算机的交互语言,但实际上每种3D打印机使用的G-code,都多多少少有些不同。这也可以说,每种3D打印机都有自己的“方言”。我们要研究G-code,就要从一种最常见的“方言”,也可以说是“普通话”开始,先了解一种,然后再学习其他类似的语言,相互对比,就很容易了。

    基础运动

    既然G-code是计算机指挥3D打印机干活用的一套语言,那么其中最重要的就是运动类的指令。

    G0/G1 直线移动

    虽然从名字上看,G0叫做“快速直线移动”,而G1叫做“直线移动”,但实际上在Repetier-firmware里面,G0和G1指令是完全等价的,没有任何区别。移动是否快速,完全是靠参数F来决定的(下面会详细介绍)。这条指令的作用也很简单,就是将挤出头线性移动到一个特定的位置。这条指令带有不少参数,完整的形式是这样的:

      G0 Xnnn Ynnn Znnn Ennn Fnnn Snnn  或者  G1 Xnnn Ynnn Znnn Ennn Fnnn Snnn  使用时,不需要所有的参数全部存在,但至少要有一个参数。其中,

    Xnnn表示X轴的移动位置;

    Ynnn表示Y轴的移动位置;

    Znnn表示Z轴的移动位置;

    Ennn表示E轴(挤出头步进电机)的移动位置;

    Fnnn表示速度,单位是毫米/每分钟;

    Snnn表示是否检查限位开关,S0不检查,S1检查,缺省值是S0;

    举例来说,

    G1F1500G1X50Y25.3E22.4

    这样两行G-code,表示了首先将速度设置为1500mm/min,也就是25mm/s,然后将挤出头移动至x=50mm, y=25.3mm的位置上,z轴高度不变,并且将挤出头步进电机移动至22.4mm的位置上。这里,速度、xyz位置都比较好理解,但挤出头步进电机的位置怎么理解呢?移动至22.4mm处,代表着挤出了多少耗材呢?实际上,这里挤出头的具体动作,要根据之前挤出头步进电机所在的状态(也就是位置)而定。比如在这两条语句之前,挤出头步进电机已经处于20mm的位置处,那么这里挤出头步进电机只要再前进2.4mm就可以了。

    仔细想想,其实挤出头步进电机的工作方式,与xyz轴完全一样。xyz轴之所以比较好理解,是因为我们清楚的知道原点(0, 0, 0)的位置在哪里。而对于e轴来说原点的位置也会在打印开始处被初始化到0的位置。知道了原点的位置,就可以正确理解挤出头步进电机的工作方式了。实际上,挤出头步进电机仍然是以原点为基础,只不过是在整个打印过程中持续增加的。(思考:切片器的挤出头回抽动作,对应了什么样的G-code代码?)

    再举一例,G1F1500G1X50Y25.3E22.4F3000

    这个例子与上面的例子非常类似,唯一的区别,就是F参数了。而这两条语句的意义,除了对XYZE的移动之外,还会将打印速度,从语句执行开始时的1500mm/min,提高到语句执行结束时的3000mm/min。这里有两点需要注意。

    第一点,F参数与XYZE参数一样,在语句执行的过程中线性插值;

    第二点,在预先知道第一点的前提下,F参数使得计算机对3D打印机的控制更加深入和精准了。计算得当的情况下,切片器可以精确控制3D打印机的加速和减速过程,使得整个3D打印过程更加顺滑。

    G2/G3 圆弧移动

    这两条命令中,G2是顺时针圆弧移动,G3是逆时针圆弧移动。命令的完整形式是:

    G2 Xnnn Ynnn Innn Jnnn Rnnn Ennn Fnnn  或者   G3 Xnnn Ynnn Innn Jnnn Rnnn Ennn Fnnn

    其中,

    Xnnn表示移动目标点的X坐标;

    Ynnn表示移动目标点的Y坐标;

    Innn表示圆心位置,值是圆心距离当前位置的X分量;

    Jnnn表示圆心位置,值是圆心距离当前位置的Y分量;

    Rnnn表示圆形的半径长度;

    Ennn表示E轴(挤出头步进电机)的移动位置;

    Fnnn表示速度,单位是毫米/每分钟;

    根据勾股定理,R2 = I2 + J2。因此,如果提供了圆心位置参数,就不需要提供半径参数了。反之,如果提供了半径参数,也可以根据当前点和目标点计算出圆心位置,就不需要提供I/J参数了。其他几个的参数用法,与G0/G1是完全一样的。

    G2/G3命令面临的最尴尬的问题,是常用的上位机切片器软件,包括Slic3r以及Cura engine,并不会生成这两条指令。所有3D模型中的圆弧,在STL文件中已经被转化为使用大量小线段拟合而成的曲线。这样,切片器自然也不会把这些小线段当做圆弧处理。最终的G-code输出结果,也只会存在G0/G1指令,而不会存在G2/G3指令。当然,据小编所知,如果你使用的是比较小众的上位机软件,比如artCAM等,因为这些软件的输入并不是STL文件,因此它们的输出G-code是很有可能出现G2/G3命令的。

    如果确定了你的3D打印机只会接收到G0/G1直线移动命令,那么我们完全可以在3D打印机固件配置中,#defineARC_SUPPORT 0  这样,所有与G2/G3指令相关的代码,就都不会编译,也不会包含在最终的固件代码中了。可以节省一些固件的空间,同时并不会影响任何3D打印机的功能。

    还有一个问题留给大家思考:在上位机切片软件输出G2/G3命令的情况下,相比于上位机切片软件输出G0/G1命令的情况,是否3D打印机打印圆形物体时会更圆呢?(答案是不会。)那么其中的原理是什么?

    G4 暂停移动

    这条命令让挤出机在当前位置停止一段时间。可能的参数包括:

    Pnnn表示停止移动的时间,以毫秒为单位,1000毫秒等于1秒。

    Snnn也表示停止移动的时间,以秒为单位。

    因此,G4 P2000命令与G4 S2命令是完全等价的。

    G10/G11 回抽/反回抽

    这两条命令使挤出头执行一个回抽(G10)或者相反的动作(G11)。所谓回抽,就是让E轴步进电机反转一小段。而反回抽则让E轴步进电机正转一小段。参数只有一个:

    Snnn表示回抽的距离。

    S1表示长回抽,S0表示短回抽。

    实际上,目前的切片器并不太依赖于G10/G11指令执行回抽动作,而是利用G1 Ennn命令直接命令挤出头步进电机前进或倒退到某一个位置。因此,与G2/G3命令类似,G10/G11命令基本上是个摆设,除非未来有专门的切片器可以生成这两条指令,否则完全可以将这两条指令关闭,节省内存空间。在固件配置中,定义

    #defineFEATURE_RETRACTION 0

    可以关闭G10/G11功能,在编译期去除这段相关的代码。

    G20/G21 设置距离单位

    这两条命令非常简单,用于设置当前距离单位为英寸(G20)或者毫米(G21)。没有参数。

    未设置时缺省值是毫米。

    G28 归零

    这条命令使3D打印机XYZ轴以及挤出头E轴归零。参数包括:

    X表示使X轴归零

    Y表示使Y轴归零

    Z表示使Z轴归零

    E表示重置E轴的位置为0,与XYZ轴不同的是,如果使用了E参数,E轴步进电机并不运动,而是将当前的E轴位置直接设置为0,这样下面对E轴的运动指令,都会解释为相对0点的运动。

    如果使用时没有任何参数,直接使用G28,等价于G28 XYZ命令。这时并不会对E轴进行重置为0的操作。

    XYZ轴归零的顺序,由固件配置HOMEING_ORDER决定,比如定义为

    #defineHOMING_ORDER HOME_ORDER_XYZ

    就代表着先归零X轴,然后是Y轴,最后是Z轴。

    T 设置当前挤出头

    对于拥有多个挤出头的3D打印机来说,需要使用T命令选择当前工作的挤出头。这条命令有一个无名参数,参数值直接跟在T后面。例如:

    T0表示选择第一个挤出头;

    T1表示选择第二个挤出头;

    参数是T命令最特殊的一点。这与其他所有的G-code命令都不相同。

    Z轴高度测试与自动调平

    三角洲类型的3D打印机,由于其打印速度更快,受到很多3D打印用户的欢迎。与XYZ式3D打印机最大的一个不同,在于三角洲类型3D打印机的运动计算更加复杂,很难依赖人工调平达到较好的打印效果。因此,对Z轴的自动高度测试,以及自动调平相关的功能,就显得更加重要了。以下G-code命令,是Repetier-firmware对这方面进行支持的一组命令。当然,这些功能并不仅限于三角洲类型的3D打印机。如果是包含了Z轴高度测试微动开关的XYZ式3D打印机,也同样可以使用这些功能。

    G29 Z轴高度三点测试

    这条命令测试打印平面上三个点的Z轴高度,并在串口上输出结果。参数包括:

    Snnn测试结果的处理方式。S1表示更新内存中的Z轴高度值(重置系统会丢失),S2表示更新内存以及EEPROM中的Z轴高度值(重置系统不会丢失)。

    无参数时,G29命令表示只从串口上输出结果,不更新内存或EEPROM中的Z轴高度值。

    一般来说,只有使用高位限位开关(也就是说,Z轴的限位开关位于Z轴坐标最大处),且在挤出头上附带有Z轴高度测试微动开关的机型,适合使用G29命令测试Z轴高度。其他机械配置的机型,不适合使用G29命令。G29命令由固件配置

    #defineFEATURE_Z_PROBE 1

    决定是否开启。如果这个配置项定义为0,则编译时会去除对G29命令的支持,节省内存的使用。

    命令执行时,打印平面上的三个点,其XY坐标由以下固件配置参数决定:

    #defineZ_PROBE_X1 -52#defineZ_PROBE_Y1 -30#defineZ_PROBE_X2 52#defineZ_PROBE_Y2 -30#defineZ_PROBE_X3 0#defineZ_PROBE_Y3 60

    命令执行的开始和结束,分别会执行一段预定义的G-code。缺省的固件配置定义为:

    #defineZ_PROBE_START_SCRIPT “G28”#defineZ_PROBE_FINISHED_SCRIPT “”

    可以看出,在缺省状态下,开始执行G29时,系统会自动对挤出头进行复位(G28命令)。结束执行G29时,没有特殊的动作。

    G29命令的Z轴高度测试,通常由一个微动开关控制触发。这个开关的端口号,由Z_PROBE_PIN单独指定。

    G29命令的输出,格式为:

    X:0.00Y:0.00Z:200.00E:0.00Z-probe:5.01X:-52.00Y:-30.00Z-probe:13.04X:52.00Y:-30.00Z-probe:12.77X:0.00Y:60.00X:0.00Y:60.00Z:-98.48E:0.00

    从以上例子的输出可以看出,G29命令一共测试了三个坐标点,分别在(-52, -30), (53, 30)以及(0, 60)的位置,形成一个正三角形。三个点的Z轴高度相差比较悬殊,在第一个点正好是5mm的情况下,后两个点分别是13.04mm以及12.77mm。第一行和最后一行,是测试开始时以及测试结束时的挤出头坐标位置。

    G30 Z轴高度单点测试(单步)

    这条命令作为一个完整Z轴高度测试过程的一步,测试打印平面上一个点的Z轴高度,并在串口上输出结果。这个完整的Z轴高度测试过程,通常是由3D打印机控制软件连续发出的,通过参数控制G30的执行状态。因此在手动工作方式下,G30命令只适合不带参数运行(等价于G30 P3,见下面的参数说明)。

    G30命令的参数包括:

    Pnnn表示测试的状态,P1表示当前这步是整个Z轴高度测试过程的第一步;P2表示当前这步是整个Z轴高度测试过程的最后一步;P3表示当前这步是Z轴高度测试过程的唯一一步,也就是说既是第一步也是最后一步;P0表示当前这步是Z轴高度测试过程中的中间一步。无参数情况下,P的缺省值是3。

    与G29命令类似,G30命令同样由固件配置

    #defineFEATURE_Z_PROBE 1

    决定是否开启。

    G30命令的输出,与上面的G29输出格式一致,但只有其中的一行,需要上位机软件多次发出G30命令,再综合处理所有的输出结果。

    G31 输出Z轴高度测试微动开关状态

    这条命令非常简单,没有参数。执行后会输出当前Z轴高度测试微动开关的当前状态:

    Z-probestate:L

    其中L表示微动开关没有触发。如果是处于触发状态,这里会输出H。

    G29命令、G30命令、G31命令只进行Z轴的高度测试,并不进行自动调平。有些上位机3D打印机控制软件,会通过这一组命令配合自动跳屏算法实现(上位机)热床自动调平功能。如果希望不通过上位机,只由3D打印机自身完成自动调平功能,需要使用G32命令。

    G32 热床自动调平

    这条命令在G29命令的基础上,不仅测试打印平面上三个点的Z轴高度,而且还会根据测试的结果,对3D打印机的机械参数进行调整,实现热床自动调平。G32命令使用的参数与G29命令是一致的:

    Snnn测试结果的处理方式。S1表示更新内存中的相关参数值(重置系统会丢失),S2表示更新内存以及EEPROM中的相关参数值(重置系统不会丢失)。

    G32命令执行完成时,不仅Z轴高度参数发生了改变,而且还会根据3D打印机的硬件配置,对热床进行相应的调平处理。

    如果热床本身是使用步进电机进行高度控制的,那么程序会自动调整步进电机的位置,使热床自动调整为平整的状态;如果热床本身不能移动(这个应该是更常见的情况),那么G32命令会在3D打印机内存中构建一个转换矩阵(Transformation matrix),让未来3D打印机所处理的所有三维空间位置,都先经过这个矩阵的变换,保证在Z=0的情况下,正好与热床平面完全吻合。由于这里涉及到高深的计算机图形学知识,我们就不详细介绍了。有修改这方面代码需求的朋友,可以直接与小编进行联系。

    G32命令,由固件配置

    #defineFEATURE_AUTOLEVEL 1

    决定是否开启。

    G32命令的输出,格式与G29命令类似:

    X:0.00Y:0.00Z:200.00E:0.00Z-probe:5.00X:-52.00Y:-30.00Z-probe:12.97X:52.00Y:-30.00Z-probe:12.76X:0.00Y:60.00Info: 0.99709-0.00319-0.076280.000000.99912-0.41910.076340.0041790.99621Info:AutolevelingenabledX:7.32Y:64.08Z:-95.66E:0.00X:0.00Y:0.00Z:200.00E:0.00

    除了与G29命令相似的测量信息之外,G32命令还输出了计算得到的自动调平矩阵,并且打开了自动调平功能。需要注意的一点是,G32命令虽然生成了自动调平矩阵,但并没将其保存在EEPROM中,因此下次开机这个信息将会丢失。可以配合M320 S1命令,将自动调平矩阵保存在EEPROM中。

    M251 将当前Z轴位置保存为Z轴高度值

    这条命令可以将当前的Z轴位置保存为Z轴高度值,以使前面的Z轴高度手动/自动测量的结果起作用。通常,M251命令只工作在三角洲机型上,并且应该与G29命令联合使用(自动测量Z轴高度)。这条命令没有相关的参数。

    当3D打印机打开EEPROM支持时,这条命令还会将Z轴高度值同时保存在EEPROM中。

    只有当固件配置定义

    #defineZ_HOME_DIR -1

    也就是Z轴向正方向归位,并且定义

    #defineMAX_HARDWARE_ENDSTOP_Z true

    也就是存在硬件的Z轴高位限位开关时,M251命令才会在编译中包含相关的代码。

    通常,只有三角洲类型的3D打印机才能满足这两个条件限制。

    M320/M321 开启/关闭自动调平

    开启(M320)或者关闭(M321)自动调平功能,使自动调平转换矩阵起作用或不起作用。命令参数为

    Snnn表示是否保存于EEPROM,没有S参数或者S0表示不保存于EEPROM,S1表示保存于EEPROM,在关闭自动调平(M321)命令中S3表示将自动调平矩阵清零且保存于EEPROM中;

    M320的输出结果为:

    Info:Autolevelingenabled

    表示自动调平已经打开。

    M321的输出结果为:

    Info:Autolevelingdisabled

    表示自动调平已经关闭。

    M322 清零自动调平转换矩阵

    清零(M322)自动调平转换矩阵。显然,清零这个动作的同时自动调平功能也关闭了。命令参数为

    Snnn表示是否保存于EEPROM,S0表示不保存于EEPROM,S1表示保存于EEPROM;

    也就是说,

    M321 S3 命令等价于 M322 S1 命令,两者都是清零自动调平矩阵,关闭自动调平功能,并且将这个设置保存于EEPROM之中。

    以上三条命令,与G32命令相同,由固件配置

    #defineFEATURE_AUTOLEVEL 1 决定是否开启。

    M322的输出结果为: Info:Autolevelmatrixreset  表示自动调平转换矩阵已经被清零。

    坐标模式与坐标位置

    G90/G91 设置坐标模式

    这两条命令用于设置当前坐标模式为绝对坐标模式(G90)或者相对坐标模式(G91)。没有参数。

    未设置时缺省值是绝对坐标模式。我们在这篇教程中,所有的例子也都是以绝对坐标模式给出的。

    在相对坐标模式下,每次步进电机XYZE移动之后,当前位置都会重置为0。对于以下两条G-code命令

    G0 X1

    G0 X-1

    如果3D打印机当前处于相对坐标模式下,那么X轴步进电机会先向正方向移动一个单位,再向反方向移动一个单位。第二条语句,实际移动距离是1个单位(向X轴反方向)。

    而如果3D打印机当前处于绝对坐标模式下,那么X轴步进电机会先移动到X=1的位置处,再移动到X=-1的位置处。第二条语句,实际移动距离是2个单位(向X轴反方向)。

    G92 设置位置

    设置3D打印机内存中XYZE的位置值。不移动对应的步进电机。参数包括:

    Xnnn表示X轴的位置值;

    Ynnn表示Y轴的位置值;

    Znnn表示Z轴的位置值;

    Ennn表示E轴(挤出机步进电机)的位置值;

    辅助步进电机

    一些3D打印机的机械设计,会在XYZE四个步进电机轴之外,使用更多的辅助步进电机。Repetier-firmware提供了一套辅助步进电机指令,让用户(以及上位机软件)可以操作这些辅助步进电机。由于辅助步进电机的用途、参数各异,为了让这套指令更加通用,这些指令被设计为非常简单的形式。

    G201 移动步进电机位置

    将步进电机P的位置移动到X位置处。参数包括:

    Pnnn表示第P个辅助步进电机;

    Xnnn表示这个步进电机的目标位置;

    这条命令与G1命令非常类似。

    G202 设置当前位置

    将X位置设置为步进电机P的当前位置。不实际移动步进电机。参数包括:

    Pnnn表示第P个辅助步进电机;

    Xnnn表示这个步进电机的当前位置;

    这条命令与G92命令非常类似。

    G203 报告当前位置

    报告步进电机P的当前位置。参数包括:

    Pnnn表示第P个辅助步进电机;

    这条命令与M114命令非常类似。

    G203 开启/关闭步进电机

    用于开启/关闭步进电机P。参数包括:

    Pnnn表示第P个辅助步进电机;

    Snnn表示开闭标志,S0表示关闭步进电机,S1表示开启步进电机;

    步进电机开启后,有两种可能的状态。一种是“运动”状态,也就是正在进行正向或反向的旋转。另一种是“保持位置”状态,也就是保持当前的位置不变。虽然步进电机关闭也不会主动移动位置,但“保持位置”状态与步进电机关闭状态仍有显著的区别。“保持位置”状态下,当步进电机受力时,会产生一个反向的力矩,使步进电机位置保持不变。

    这条命令与“节能管理”一节中的M84命令有关。M84命令用于关闭XYZE步进电机,但不能打开这些步进电机。

    SD卡管理

    M20 列目录

    显示SD卡所有目录内容。没有相关的参数。

    M20命令的输出,格式为:

    Begin filelista.gcodeTEST/TEST/c.gcodeb.gcodeEnd filelist

    这个目录内容清单,说明了这张SD卡上目前有3个文件,分别是a.gcode,b.gcode以及c.gcode,其中,a.gcode和b.gcode都保存于根目录下,而c.gcode保存于一个名称为TEST的文件夹里面。

    M21 加载SD卡

    尝试加载SD卡,也就是执行Mount动作。没有相关的参数。

    M22 卸载SD卡

    卸载SD卡,也就是执行Unmount动作。没有相关的参数。

    M23 选择文件

    选择一个SD卡上的文件。参数为

    filename表示被选择的文件名(包含目录名,以/分隔);

    文件选择之后,可以执行打印、删除等动作。例如命令

    M23 TEST/c.gcode

    选定了SD卡TEST文件夹里面的c.gcode文件作为当前文件。

    同时输出格式为:

    Fileopened:c.gcodeSize:1127565Fileselected

    表示文件已经顺利打开。

    M24 开始SD卡打印

    打印当前选定的SD卡文件。逐行读入SD卡文件内容G-code代码,并执行。没有相关参数。

    M25 暂停SD卡打印

    暂停当前的SD卡打印。没有相关参数。

    M26 设置当前文件当前位置

    设置当前文件的当前位置。参数为

    Snnn表示当前位置的字节数。

    M27 获取SD卡打印进度

    获取SD卡打印进度。没有相关参数。

    M27命令的输出,格式为:

    SD printingbyte11518/1127578

    这条命令供上位机获取当前的3D打印进度信息,用于显示在电脑界面上。

    M28 写SD卡文件

    写一个SD卡文件。参数为:

    filename表示待写入的文件名(包含目录名,以/分隔);

    从执行M28命令开始,所有3D打印机接收到的G-code,除了M29命令以外,都会保存至指定的SD卡文件中,而不会被实际执行。这条命令可以将一个G-code文件从上位机3D打印控制软件复制到3D打印机的SD卡上,以供未来执行。

    M29 结束写SD卡文件

    结束以M28开始的“保存至SD卡文件”状态,将3D打印机恢复到正常状态。从此,所有接收到的G-code命令,都会被直接解释执行。没有相关参数。

    M30 删除文件

    删除一个SD卡中的文件。参数为:

    filename表示待删除的文件名(包含目录名,以/分隔);

    M32 创建子目录

    在SD卡上创建一个子目录。参数为:

    filename表示待创建的子目录(包含目录名,以/分隔);

    以上所有SD卡相关指令,都由固件配置

    define SDSUPPORT 1

    决定是否开启。如果固件不需要支持SD卡,关闭这项固件配置,可以节省不少内存空间。

    节能管理

    M84 设置步进电机自动关闭时间

    当3D打印机一段时间没有接收到步进电机运动指令之后,3D打印机(为了节能)会自动关闭步进电机。使用M84指令,可以设置这个自动关闭步进电机的时间。参数包括:

    Snnn表示步进电机关闭的时间,以秒为单位。

    如果使用M84时没有指定S参数,则步进电机会立即关闭。

    M84命令的缺省值是360秒。在固件配置中,缺省值由

    #defineSTEPPER_INACTIVE_TIME 360L

    控制。

    M85 设置3D打印机自动关闭时间

    当3D打印机一段时间没有接收到指令之后,3D打印机(为了节能)会自动关闭步进电机以及挤出头、热床等设备。使用M85指令,可以设置这个自动关闭3D打印机的时间。参数包括:

    Snnn表示在关闭步进电机之前步进电机没有活动的时间,以秒为单位。

    如果使用M85时没有指定S参数,或者使用了S0参数,则代表取消3D打印机自动关闭功能,挤出头、热床等在工作完成之后,一直会处于当前状态,而不会被自动关闭。

    M85命令的缺省值是0(不自动关闭)。在固件配置中,缺省值由

    #defineMAX_INACTIVE_TIME 0L

    控制。

    温度管理

    M104 设置挤出头目标温度

    设置挤出头的目标温度。执行这条命令后,不需要等待达到这个温度,立即开始执行下一条G-code语句。相关参数包括:

    Snnn表示目标温度;

    Tnnn表示对应的挤出头;

    P表示要等待前面的指令完成之后,再开始设置挤出头温度;

    Fnnn表示到达目标温度之后,是否触发蜂鸣器。F1表示要触发;

    如果执行命令时没有带T参数,则针对当前挤出头设置目标温度。

    M140 设置热床目标温度

    设置热床的目标温度。执行这条命令后,不需要等待达到这个温度,立即开始执行下一条G-code语句。相关参数包括:

    Snnn表示目标温度;

    Fnnn表示到达目标温度之后,是否触发蜂鸣器。F1表示要触发;

    M105 获取当前的温度

    获取当前温度值,包括挤出头和热床的温度。相关参数包括:

    X表示输出AD转换输入的原始值;

    M105命令的输出,格式为:

    T:18.97 /0 B:18.75 /0 B@:0 @:0

    可以看到,T:之后的部分,代表挤出头的当前温度/目标温度;B:之后的部分代表热床的当前温度/目标温度。

    在PID温度控制模式下,B@:后面的数字代表热床当前的输出强度,是一个0255的值,@:后面的数字,代表挤出头当前的输出强度,也是一个0255的值。例子中,挤出头、热床都处于关闭状态,所以这个位置的值都是0。

    M109 等待挤出头加热达到目标温度

    设置挤出头的目标温度,并等待达到这个温度。相关参数包括:

    Snnn表示目标温度;

    Tnnn表示对应的挤出头;

    Fnnn表示到达目标温度之后,是否触发蜂鸣器。F1表示要触发;

    如果执行命令时没有带T参数,则针对当前挤出头设置目标温度。

    M190 等待热床加热达到目标温度

    设置热床的目标温度,并等待达到这个温度。相关参数包括:

    Snnn表示目标温度;

    Fnnn表示到达目标温度之后,是否触发蜂鸣器。F1表示要触发;

    M116 等待温度达到目标温度

    等待所有挤出头/热床到达由之前的M104/M140指令所指定的目标温度。没有相关参数。

    其他常用指令

    M92 设置分辨率

    设置3D打印机内存中XYZE步进电机的分辨率。参数包括:

    Xnnn表示X轴的分辨率;

    Ynnn表示Y轴的分辨率;

    Znnn表示Z轴的分辨率;

    Ennn表示E轴(挤出机步进电机)的分辨率;

    M106/M107 打开/关闭风扇

    这两条命令用于打开(M106)或关闭(M107)风扇。相关的参数包括:

    Snnn表示打开风扇时风扇的转速,取值范围在0~255之间;

    P表示要等待前面的指令完成之后,再开始调整风扇转速;

    在固件配置中,定义

    #defineFEATURE_FAN_CONTROL 1

    表示支持风扇控制功能,在编译中会包含相关的代码。

    M114 输出当前位置

    输出挤出头当前位置。没有相关的参数。

    M114命令的输出,格式为:

    X:20.00Y:30.00Z:10.000E:0.0000

    M115 输出3D打印机信息

    输出3D打印机信息。没有相关的参数。

    M115命令的输出,格式为:

    FIRMWARE_NAME:Repetier_0.92.3FIRMWARE_URL:…Printedfilament:0.00mPrintingtime:0days0hours0minSpeedMultiply:100FlowMultiply:100

    第一行是固件的版本信息,很长,我没有列完整。第二行是已经打印了多少米耗材,打印时间是几天几小时几分钟。第三行是速度系数,参考M220命令。第四行是流率系数,参考M221命令。

    M119 输出限位开关状态

    将当前限位开关状态输出。没有相关的参数。

    M119命令的输出,格式为:

    endstopshit:x_min:Ly_min:Lz_min:L

    列出了XYZ三个轴的低位限位开关的当前状态。L代表限位开关没有触发。H代表限位开关被触发了。

    M201/M202 设置最大加速度

    这两条命令设置打印加速度。包括挤出头工作时(打印中)的运动加速度(M201),以及挤出头不工作时(移动中)的运动加速度(M202)。参数为

    Xnnn表示X轴的加速度;

    Ynnn表示Y轴的加速度;

    Znnn表示Z轴的加速度;

    Ennn表示E轴的加速度;

    在固件配置中,定义

    #defineRAMP_ACCELERATION 1

    表示支持加速度功能,在编译中会包含相关的代码。

    M203 监控温度

    使用串口输出监控3D打印机的温度。参数为

    Snnn表示是否监控,S0关闭监控,S1打开监控;

    当监控处于打开状态,可以从串口定时获取当前的温度信息。

    监控输出格式与M105命令的输出结果完全一致。

    M204 设置PID参数

    设置挤出头温度控制的PID参数,命令参数为

    Snnn表示对应的挤出头,无S参数表示使用当前挤出头;

    Xnnn表示P参数;

    Ynnn表示I参数;

    Znnn表示D参数;

    M207 修改抖动(Jerk)值

    修改当前的最大抖动值。命令参数为

    Xnnn表示XY轴的最大抖动值;

    Znnn表示Z轴的最大抖动值;

    Ennn表示E轴的最大抖动值;

    XY轴抖动指的是3D打印机同时在X轴和Y轴上移动时,产生的和速度最大值。比如,3D打印机加热头正在向X轴正方向全速移动,下一条指令变为向Y轴正方向移动。如果同时在X轴和Y轴上改变速度,那么实际产生的速度是X方向的速度和Y方向的速度的向量和,这个比较大的速度变化值,会对3D打印机的机械部件产生不利的影响,而且会造成比较大的噪音。这里的设置,就限制了这个XY轴上和速度的最大值。当然这个值也不能设置的太小,太小的话,首先打印速度会变得很慢,而且打印会产生更多的瑕疵。

    Z轴抖动与XY轴抖动意义类似,不同点是Z-Jerk是Z轴方向不为0的抖动速度值。因为这项涉及到Z轴的运动,因此最大速度就低多了。

    M207命令的输出,格式为:

    Jerk:20.00ZJerk:0.30

    这个输出意义很简单,表示XY轴抖动速度为20mm/s,Z轴抖动速度为0.3mm/s。

    M220 设置速度

    设置3D打印机运行速度系数。命令参数为

    Snnn表示系数,是一个百分数,如果S参数不存在,则使用缺省值100;

    3D打印机运行速度系数,是一个在25%到500%范围内变化的值。这个系数值在3D打印机运行过程中,与切片器给出的3D打印机运动速度基础值相乘,得到最终的3D打印机实际运动速度值。

    M220命令的输出,格式为:

    SpeedMultiply:100

    M221 设置流率

    设置3D打印机的流率系数(Flow rate)。命令参数为

    Snnn表示系数,是一个百分数,如果S参数不存在,则使用缺省值100;

    3D打印机流率系数,是在上位机切片软件通过耗材直径、喷头直径、层高以及3D打印速度等因素综合计算得到的E轴运动速度的基础上,叠加的一个E轴运动速度系数。简单地说,就是控制挤出头耗材挤出量的多少。这个系数可以在25%到500%范围内变化。

    M221命令的输出,格式为:

    FlowMultiply:100

    M302 设置是否允许冷挤出

    为了保护3D打印机的挤出头,通常设置下,E轴的运动必须在挤出头加热到一定温度之后才被允许。在挤出头冷却的情况下,所有的E轴运动命令是被3D打印机固件忽略的。但有些情况下我们需要在挤出头冷却的情况下运动E轴,这时可以通过M302命令进行设置。命令参数为

    Snnn表示是否允许冷挤出,S0表示不允许,S1表示允许,没有S参数缺省表示允许;

    M302命令的输出,为当前是否允许冷挤出。允许时会输出:

    Cold extrusion allowed

    不允许时会输出:

    Code extrusion disallowed

    较不常用指令

    这些指令实在无法归类了,只能以“较不常用指令”为名字,放在了一起。

    M42直接读写端口

    此命令直接读/写一个Arduino端口,为3D打印控制软件上位机扩展程序功能提供基础。参数包括:

    Pnnn表示Arduino的输入/输出端口;输出时固件程序会同时输出到数字端口和模拟端口;输入时固件程序会从数字端口输入;

    Snnn表示写入输出端口的值,0到255之间是合法的数字;当S参数不存在的时候,M42指令起输入作用;

    Repetier-firmware固件中预先定义了一个表格,称为“敏感端口表格”,所有位于这个表格内的端口,也就是当前已经被步进电机、限位开关以及热敏电阻占用的端口,都不能被M42命令影响。其他当前未占用的端口,可以由这条命令进行IO操作。

    M82/M83 设置挤出头步进电机坐标模式

    与G90/G91命令类似,这两条命令用于设置挤出头当前坐标模式为绝对坐标模式(M82)或者相对坐标模式(M83)。没有参数。

    未设置时缺省值是绝对坐标模式。

    需要注意的是,G90/G91设置的坐标模式,同时对XYZE四个轴起作用,但M82/M83设置的坐标模式,只对E轴(挤出头步进电机)起作用。

    M99 暂时关闭步进电机

    M99命令可以暂时关闭XYZ轴步进电机一段时间。命令参数包括:

    Snnn表示所需暂时关闭步进电机的时间,以秒为单位;

    X表示暂时关闭X轴步进电机;

    Y表示暂时关闭Y轴步进电机;

    Z表示暂时关闭Z轴步进电机;

    如果S参数没有指定,则暂时关闭10秒钟时间。暂时关闭时间到达之后,重新打开相应轴的步进电机。

    M111 允许/禁止运行时调试标志

    运行时调试标志是一组布尔值,一共有6个不同的标志,使用位域(Bit Field)的表示方式。用户可以利用M111指令修改这些标志的值。相关参数包括:

    Snnn表示直接将调试标志设置为S值;

    Pnnn表示以位操作的方式,将P值与当前调试标志做某种操作。如果P值是正数,则进行按位或操作(增加P参数所带的标志位);如果P值是负数,则忽略P的符号,进行取反后按位与操作(去除P参数所带的标志位);

    调试标志的位域,由以下6个布尔值组成:

    第1位,值为1,表示是否回显(Echo)由上位机发送至下位机的命令;

    第2位,值为2,表示是否输出信息(Info),实际在固件代码中并未使用;

    第3位,值为4,表示是否输出错误(Error),在固件出错时会将出错信息发送回上位机;

    第4位,值为8,表示是否进入模拟执行模式(Dry run),在模拟执行模式下,3D打印机不实际执行上位机发送的命令,只修改3D打印机的内存状态;

    第5位,值为16,表示是否进入调试通讯模式(Communication),实际在固件代码中似乎并未使用;

    第6位,值为32,表示是否进入禁止移动模式(No Move),在这个模式下,所有对步进电机的移动命令,都会被忽略;

    M117 发送消息至LCD屏幕

    将一条详细发送至LCD屏幕,显示为当前状态信息。参数为

    message表示待显示在LCD屏幕上的文本;

    M120 测试蜂鸣器

    使蜂鸣器发出蜂鸣声。参数为

    Snnn表示发出声音/不发出声音的时间,以毫秒为单位;

    Pnnn表示重复的次数;

    如果3D打印机有蜂鸣器,而且是无源蜂鸣器,那么通过S参数和P参数的组合,可以得到不同频率的声音。比如

    M120 S24 P8

    可以得到一个较长的蜂鸣声。如果3D打印机的蜂鸣器是有源蜂鸣器,那么M120指令只能控制蜂鸣时间,不能控制蜂鸣器的声音频率。

    M200 设置体积挤出模式

    将3D打印机设置为“体积挤出模式”,同时设定挤出头直径参数。相关参数包括

    Tnnn表示对应的挤出头,无T参数表示使用当前挤出头;

    Dnnn表示挤出头的实际直径,无D参数表示关闭体积挤出模式;

    体积挤出模式,是相对于缺省的“长度挤出模式”而言的另一种挤出模式。在常见的“长度挤出模式”下,G-code中的使E轴运动的G0/G1命令,其参数都是以长度单位mm作为单位的。这样确实比较简单,但问题是我们在切片的时候,就必须知道要使用的喷头直径,否则无法计算出耗材前进的实际长度。

    为了使G-code在生成之后适用于多种不同喷头直径的3D打印机机型,我们可以在上位机切片时,将E轴参数变为以体积单位mm3作为单位,然后在下位机固件中,再设定正在使用的喷头直径,以达到最终正确输出的目的。为了以体积单位mm3作为E轴的参数单位,上位机需要将喷头直径设定为1.128mm(这样,耗材每前进1mm,会喷出1mmπ(1.128mm/2)2约等于1mm3的耗材。)同时,下位机要使用下面的语句:

    M200T0D0.4

    将实际的挤出头喷头直径设置为0.4mm。同时在上位机和下位机进行这样的操作之后,3D打印机可以在E轴参数单位为mm3的情况下,正确完成打印操作。

    M209 开启/关闭自动回抽

    开启/关闭自动回抽功能。命令参数为

    Snnn表示是否开启自动回抽功能,1表示开启,0表示关闭;

    通常上位机切片器负责在合适的位置处加入回抽指令。如果你的切片器功能比较弱,不能加入合适的回抽指令,那么可以打开这个特性,由固件自动回抽。

    在固件配置中,定义

    #defineFEATURE_RETRACTION 1

    表示支持自动回抽功能,在编译中会包含相关的代码。

    M280 多头重复打印模式设置

    有些特殊配置的3D打印机,允许2~4个挤出头同时工作,并且这些挤出头动作完全一致,同时打印出多件完全一样的打印件,这种工作模式叫做多头重复打印模式(Ditto mode)。M280命令对这个模式进行设置。命令参数为

    Snnn表示这个模式下的挤出头个数;S0表示关闭多头重复打印模式;S1S3表示工作在多头重复打印模式下,并且3D打印机拥有额外的13个挤出头。

    在固件配置中,定义

    #defineFEATURE_DITTO_PRINTING 1

    表示支持多头重复打印模式功能,在编译中会包含相关的代码。

    M281 测试硬件看门狗功能

    这条命令用于测试CPU硬件中的看门狗功能。实际上,就是造成一个死循环,不再执行“喂狗”动作,从而触发CPU硬件看门狗,最终(故意地)造成3D打印机重启。这条命令只是用于3D打印机固件开发测试。

    M303 自动测试PID参数

    自动测试PID参数值。命令参数为

    Pnnn表示待测试的挤出头编号,从0开始,P<挤出头个数>代表待测试的是热床;

    Snnn表示打印温度;

    Rnnn代表重复测试次数;

    X代表是否保存于EEPROM中;

    由于加热、散热需要较多时间,这条命令执行时间很长。

    M330 测试蜂鸣器

    测试(无源)蜂鸣器,产生一个特定频率的声音。命令参数为

    Snnn表示声音的频率;

    Pnnn表示声音持续的时间,以毫秒为单位;

    如果命令没有包含S参数或者P参数,则会使用缺省值S1以及P1000。

    保存与恢复当前位置

    M400 等待当前所有移动指令完成

    等待在3D打印机内存中待处理的移动命令执行完成。没有相关的参数。

    执行这条语句之后,可以保证在下一条G-code命令执行时,所有步进电机都不处于运动状态中。

    M401 保存当前的位置

    将当前位置,包括XYZE步进电机,保存于内存的一组专用变量中。未来可以用M402命令恢复这组位置。没有相关的参数。

    M402 恢复之前保存的位置

    恢复之前由M401命令保存的位置值。命令参数为

    X表示恢复X位置;

    Y表示恢复Y位置;

    Z表示恢复Z位置;

    E表示恢复E位置;

    Fnnn表示使用参数给定的速度,无F参数时使用当前速度值;

    暂停与更换耗材

    M600 更换耗材

    在拥有显示屏的3D打印机上,启动更换耗材向导界面。没有相关的参数。

    通常,这个向导界面是从显示屏界面上触发的。M600命令提供一个接口,使更换耗材向导界面可以从上位机软件触发。

    M601 暂停/恢复挤出头

    暂停或者恢复挤出头。命令参数为

    Snnn表示暂停或者恢复,S1表示暂停挤出头,S0表示恢复挤出头工作;

    暂停挤出头包括停止挤出头加温以及停止挤出头步进电机工作。恢复则相反,加热挤出头到原来的温度。

    设置与EEPROM管理

    固件的设置,是一个比较有趣的话题,很多玩3D打印机的朋友,在遇到设置相关的问题时都会犯迷糊。实际上,对于某一项特定的设置,比如说X轴的步进电机分辨率,在3D打印机主板上,有三个不同的位置(也是三种不同的存储器)保存了这项内容,而它们的值还有可能不同。让我们先来了解一下这些保存设置内容的位置,以方便大家的理解。

    首先,是固件配置文件(configuration.h)中的设置值。配置文件中的值,会跟随固件一起编译,之后在刷机过程中,保存在了3D打印机的静态存储区(Flash ROM)中。除了刷机之外,静态存储区的内容不会发生变动,可以认为是只读的。每次开机的时候,都是一样的值在等待着我们。

    第二份设置值,保存在电可擦写静态存储区(EEPROM)。EEPROM的读写代价,比静态存储区要小。因此,3D打印机允许在刷机之后,修改设置值,而这些修改之后的设置值,就存储在EEPROM之中。每次开机,程序会先检查EEPROM,如果EEPROM中是空白的,则将静态存储区的第一份设置值复制到EEPROM之中。而如果EEPROM中已经有保存好的设置值,则程序会直接使用EEPROM中的值。有些朋友在玩3D打印机过程中可能会有这样的经验,就是明明修改了固件配置文件中的设置值,但刷机之后竟然没有发生变化。这种情况,往往就是EEPROM在捣鬼了。我们完全可以使用G-code M502 M500两条指令(指令的具体含义可以参考下面),重写EEPROM,解决这样的问题。

    第三份设置,保存在内存(RAM)中。实际用户使用的值,就是内存中的值。由于内存只在加电情况下能够保持其中的内容,因此每次开机时,3D打印机会根据上面描述的逻辑,重建内存中的设置值。如果某条指令修改的是内存中的设置值,那么这也代表着这次修改是一个临时修改,下次开机这个值就会消失了。

    总的来说,三份固件设置,使用的优先级是

    内存 > EEPROM > 配置文件

    但设置的持久性,就要反过来了。明确了解了这些,特别有助于我们解决一些与设置相关的问题,自然,看下面这些命令描述的时候,也就不会迷糊了。

    M205 输出EEPROM设置

    输出EEPROM的当前设置值表格。没有相关的参数。

    M205命令的输出,格式为:

    EPR:275 115200BaudrateEPR:3129 0.000Filamentprinted[m]EPR:2125 0Printeractive[s]…

    这是一个很长的输出,我们这里只截取了前三行。每行中,EPR:后面的第一个数字,是这个设置项值的类型。0代表8bit整数类型,1代表16bit整数类型,2代表32bit整数类型,3代表32bit浮点类型。第二个数字,是设置项值的位置(即EEPROM中的地址)。第三个数字,是设置项的值。最后,是设置项的意义。

    以第一行为例,第一行设置的是通讯波特率(Baudrate),当前值是115200。波特率设置项,在EEPROM中的位置(地址)是75,这个值是一个32bit整数类型,因此占据了从位置75开始的连续4个字节(也就是位置75, 76, 77, 78)。

    M206 修改EEPROM设置

    修改EEPROM中的某个值。命令参数为

    Pnnn表示待修改的值的位置(即EEPROM中的地址);

    Tnnn表示值的类型,0代表8bit整数类型,1代表16bit整数类型,2代表32bit整数类型,3代表32bit浮点类型;

    Snnn表示值,只能带整数,用于T为0, 1, 2的情况;

    Xnnn表示值,只能带浮点数,用于T为3的情况;

    可以看出,M206指令的使用是很复杂的,需要了解EEPROM中数值的存储位置以及数值类型,才能进行有效的修改。因此小编建议除非你完全理解M206指令的含义,否则不要使用这个指令。

    M360 输出固件配置信息

    输出固件配置信息。没有相关参数。

    M360命令的输出,格式为:

    Config:Baudrate:115200Config:InputBuffer:127Config:NumExtruder:1…

    这是一个很长的输出,我们这里只截取了前三行。每行中,都有一项配置信息的名称,以及对应的值。

    M500 保存内存中的设置值到EEPROM

    将3D打印机内存中的设置值保存到EEPROM中。没有相关的参数。

    M501 读取EEPROM的设置值到内存

    将EEPROM中的设置值读取到3D打印机内存中。没有相关的参数。

    M502 将内存中的设置值重置

    将内存中的设置值重置为固件配置(configuration.h)中的值。没有相关的参数。

    由于每次系统掉电后,内存中的值都会消失,重新启动时从EEPROM中读取,因此单独使用M502命令将只对3D打印机掉电重启之前起作用。如果想起长期作用,需要配合M500,将设置值保存到EEPROM中。

    步进电机参考电压调节

    目前市面上支持软件设置步进电机参考电压的3D打印机主板很少。大部分3D打印机主板只能通过调整微调电位器来控制步进电机参考电压。在这些3D打印机上,这一组命令是无效的。

    M907 设置步进电机参考电压(百分比值)

    设置步进电机参考电压。命令参数为

    Snnn表示对所有步进电机进行统一设置;

    Xnnn表示对X轴步进电机进行设置;

    Ynnn表示对Y轴步进电机进行设置;

    Znnn表示对Z轴步进电机进行设置;

    Ennn表示对E轴步进电机进行设置;

    所有的参数值,都是一个0~100之间的百分比数值。

    M908 设置步进电机参考电压

    与M907命令类似,设置步进电机参考电压。命令参数为

    Pnnn表示步进电机编号;

    Snnn表示步进电机参考电压设置值,要求为0~255之间的一个数值;

    这个命令与M907命令类似,同样要求3D打印机主板支持。在不支持软件调整参考电压的3D打印机主板上,M908命令无效。

    M909 输出步进电机参考电压值

    输出当前的步进电机参考电压值。没有相关的参数。

    M910 将步进电机参考电压值保存至EEPROM

    将M907/M908命令设置的步进电机参考电压值保存至EEPROM。没有相关的参数。

    需要辅助硬件支持的指令

    M80/M81 打开/关闭ATX电源

    在配置了ATX电源的3D打印机上,打开(M80)或者关闭(M81)ATX电源。没有相关的参数。

    M340 伺服电机控制

    伺服电机控制功能。命令参数为

    Pnnn表示伺服电机编号,从0开始,最大为3,可以控制4个伺服电机;

    Snnn为控制时间,单位为毫秒,应该是一个500到2500之间的数值;

    Rnnn为自动关闭时间,单位为毫秒;

    M350 设置步进电机细分数

    在支持细分数设置的3D打印机主板上(这类主板很少见),设置步进电机细分数。命令参数为

    Snnn表示将细分数的每一位(bit)都设置为相同的值,S0表示所有都设置为0,S1表示所有都设置为1;

    Xnnn表示设置细分数第0位;

    Ynnn表示设置细分数第1位;

    Znnn表示设置细分数第2位;

    Ennn表示设置细分数第3位;

    Pnnn表示设置细分数第4位;

    需要注意的是,在大多数3D打印机主板上,细分数设置是主板硬件设计时就固定的,不能通过软件调整。这种情况下,M350命令无效。

    M355 设置照明灯开关

    设置照明灯的开关。命令参数为

    Snnn表示照明灯的开关状态,S0表示关闭照明灯,S1表示打开照明灯;

    无参数时输出当前照明灯的状态。

    在固件配置中,定义

    #defineCASE_LIGHTS_PIN -1

    表示照明灯的电路硬件连接pin值,-1代表照明灯未连接。

    M355命令的输出,为当前是否打开了照明灯。打开时会输出:

    Caselights on

    关闭时会输出:

    Caselights off

    展开全文
  • adb常用命令总结

    千次阅读 2019-01-23 21:55:55
    ADB命令使用大全 ADB是什么 ADB的全称为Android Debug Bridge:android调试桥梁,下图为Android官方对adb的介绍: 可以看出,Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好...

    ADB命令使用大全


    转载地址

    ADB是什么

    ADB的全称为Android Debug Bridge:android调试桥梁,下图为Android官方对adb的介绍:
    在这里插入图片描述

    可以看出,Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好的调试apk,因此adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能;

    我们可以在android sdk安装目录的platform-tools目录下找到adb工具;

    基本用法

    命令语法

    adb 命令的基本语法如下:

    adb [-d|-e|-s <serialNumber>] <command>
    

    如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s <serialNumber>] 这一部分,直接使用 adb <command>

    为命令指定目标设备

    如果有多个设备/模拟器连接,则需要为命令指定目标设备。

    参数 含义
    -d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
    -e 指定当前唯一运行的模拟器为命令目标
    -s <serialNumber> 指定相应 serialNumber 号的设备/模拟器为命令目标

    在多个设备/模拟器连接的情况下较常用的是 -s <serialNumber> 参数,serialNumber 可以通过 adb devices 命令获取。如:

    $ adb devices
    
    List of devices attached
    cf264b8f	device
    emulator-5554	device
    10.129.164.6:5555	device
    

    输出里的 cf264b8femulator-555410.129.164.6:5555 即为 serialNumber。

    比如这时想指定 cf264b8f 这个设备来运行 adb 命令获取屏幕分辨率:

    adb -s cf264b8f shell wm size
    

    又如想给 10.129.164.6:5555 这个设备安装应用(这种形式的 serialNumber 格式为 <IP>:<Port>,一般为无线连接的设备或 Genymotion 等第三方 Android 模拟器):

    adb -s 10.129.164.6:5555 install test.apk
    

    遇到多设备/模拟器的情况均使用这几个参数为命令指定目标设备,下文中为简化描述,不再重复。

    启动/停止

    启动 adb server 命令:

    adb start-server
    

    (一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。)

    停止 adb server 命令:

    adb kill-server
    

    查看 adb 版本

    命令:

    adb version
    

    示例输出:

    Android Debug Bridge version 1.0.36
    Revision 8f855a3d9b35-android
    

    以 root 权限运行 adbd

    adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。

    所以如果 adbd 以普通权限执行,有些需要 root 权限才能执行的命令无法直接用 adb xxx 执行。这时可以 adb shell 然后 su 后执行命令,也可以让 adbd 以 root 权限执行,这个就能随意执行高权限命令了。

    命令:

    adb root
    

    正常输出:

    restarting adbd as root
    

    现在再运行 adb shell,看看命令行提示符是不是变成 # 了?

    有些手机 root 后也无法通过 adb root 命令让 adbd 以 root 权限执行,比如三星的部分机型,会提示 adbd cannot run as root in production builds,此时可以先安装 adbd Insecure,然后 adb root 试试。

    相应地,如果要恢复 adbd 为非 root 权限的话,可以使用 adb unroot 命令。

    指定 adb server 的网络端口

    命令:

    adb -P <port> start-server
    

    默认端口为 5037。

    设备连接管理

    查询已连接设备/模拟器

    命令:

    adb devices
    

    输出示例:

    List of devices attached
    cf264b8f	device
    emulator-5554	device
    10.129.164.6:5555	device
    

    输出格式为 [serialNumber] [state],serialNumber 即我们常说的 SN,state 有如下几种:

    • offline —— 表示设备未连接成功或无响应。

    • device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。

    • no device —— 没有设备/模拟器连接。

    以上输出显示当前已经连接了三台设备/模拟器,cf264b8femulator-555410.129.164.6:5555 分别是它们的 SN。从 emulator-5554 这个名字可以看出它是一个 Android 模拟器,而 10.129.164.6:5555 这种形为 <IP>:<Port> 的 serialNumber 一般是无线连接的设备或 Genymotion 等第三方 Android 模拟器。

    常见异常输出:

    1. 没有设备/模拟器连接成功。

      List of devices attached
      
    2. 设备/模拟器未连接到 adb 或无响应。

      List of devices attached
      cf264b8f	offline
      

    USB 连接

    通过 USB 连接来正常使用 adb 需要保证几点:

    1. 硬件状态正常。

      包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好。

    2. Android 设备的开发者选项和 USB 调试模式已开启。

      可以到「设置」-「开发者选项」-「Android 调试」查看。

      如果在设置里找不到开发者选项,那需要通过一个彩蛋来让它显示出来:在「设置」-「关于手机」连续点击「版本号」7 次。

    3. 设备驱动状态正常。

      这一点貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。

    4. 通过 USB 线连接好电脑和设备后确认状态。

      adb devices
      

      如果能看到

      xxxxxx device
      

      说明连接成功。

    无线连接(需要借助 USB 线)

    除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦!

    操作步骤:

    1. 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。

    2. 将设备与电脑通过 USB 线连接。

      应确保连接成功(可运行 adb devices 看是否能列出该设备)。

    3. 让设备在 5555 端口监听 TCP/IP 连接:

      adb tcpip 5555
      
    4. 断开 USB 连接。

    5. 找到设备的 IP 地址。

      一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 [查看设备信息 - IP 地址][1] 一节里的方法用 adb 命令来查看。

    6. 通过 IP 地址连接设备。

      adb connect <device-ip-address>
      

      这里的 <device-ip-address> 就是上一步中找到的设备 IP 地址。

    7. 确认连接状态。

      adb devices
      

      如果能看到

      <device-ip-address>:5555 device
      

      说明连接成功。

    如果连接不了,请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行 adb connect <device-ip-address> 那一步;

    如果还是不行的话,通过 adb kill-server 重新启动 adb 然后从头再来一次试试。

    断开无线连接

    命令:

    adb disconnect <device-ip-address>
    

    无线连接(无需借助 USB 线)

    注:需要 root 权限。

    上一节「无线连接(需要借助 USB 线)」是官方文档里介绍的方法,需要借助于 USB 数据线来实现无线连接。

    既然我们想要实现无线连接,那能不能所有步骤下来都是无线的呢?答案是能的。

    1. 在 Android 设备上安装一个终端模拟器。

      已经安装过的设备可以跳过此步。我使用的终端模拟器下载地址是:Terminal Emulator for Android Downloads

    2. 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。

    3. 打开 Android 设备上的终端模拟器,在里面依次运行命令:

      su
      setprop service.adb.tcp.port 5555
      
    4. 找到 Android 设备的 IP 地址。

      一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 [查看设备信息 - IP 地址][1] 一节里的方法用 adb 命令来查看。

    5. 在电脑上通过 adb 和 IP 地址连接 Android 设备。

      adb connect <device-ip-address>
      

      这里的 <device-ip-address> 就是上一步中找到的设备 IP 地址。

      如果能看到 connected to <device-ip-address>:5555 这样的输出则表示连接成功。

    节注一:

    有的设备,比如小米 5S + MIUI 8.0 + Android 6.0.1 MXB48T,可能在第 5 步之前需要重启 adbd 服务,在设备的终端模拟器上运行:

    restart adbd
    

    如果 restart 无效,尝试以下命令:

    stop adbd
    start adbd
    

    应用管理

    查看应用列表

    查看应用列表的基本命令格式是

    adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
    

    即在 adb shell pm list packages 的基础上可以加一些参数进行过滤查看不同的列表,支持的过滤参数如下:

    参数 显示列表
    所有应用
    -f 显示应用关联的 apk 文件
    -d 只显示 disabled 的应用
    -e 只显示 enabled 的应用
    -s 只显示系统应用
    -3 只显示第三方应用
    -i 显示应用的 installer
    -u 包含已卸载应用
    <FILTER> 包名包含 <FILTER> 字符串

    所有应用

    命令:

    adb shell pm list packages
    

    输出示例:

    package:com.android.smoketest
    package:com.example.android.livecubes
    package:com.android.providers.telephony
    package:com.google.android.googlequicksearchbox
    package:com.android.providers.calendar
    package:com.android.providers.media
    package:com.android.protips
    package:com.android.documentsui
    package:com.android.gallery
    package:com.android.externalstorage
    ...
    // other packages here
    ...
    

    系统应用

    命令:

    adb shell pm list packages -s
    

    第三方应用

    命令:

    adb shell pm list packages -3
    

    包名包含某字符串的应用

    比如要查看包名包含字符串 mazhuang 的应用列表,命令:

    adb shell pm list packages mazhuang
    

    当然也可以使用 grep 来过滤:

    adb shell pm list packages | grep mazhuang
    

    安装 APK

    命令格式:

    adb install [-lrtsdg] <path_to_apk>
    

    参数:

    adb install 后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:

    参数 含义
    -l 将应用安装到保护目录 /mnt/asec
    -r 允许覆盖安装
    -t 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用
    -s 将应用安装到 sdcard
    -d 允许降级覆盖安装
    -g 授予所有运行时权限

    运行命令后如果见到类似如下输出(状态为 Success)代表安装成功:

    [100%] /data/local/tmp/1.apk
    	pkg: /data/local/tmp/1.apk
    Success
    

    上面是当前最新版 v1.0.36 的 adb 的输出,会显示 push apk 文件到手机的进度百分比。

    使用旧版本 adb 的输出则是这样的:

    12040 KB/s (22205609 bytes in 1.801s)
            pkg: /data/local/tmp/SogouInput_android_v8.3_sweb.apk
    Success
    

    而如果状态为 Failure 则表示安装失败,比如:

    [100%] /data/local/tmp/map-20160831.apk
            pkg: /data/local/tmp/map-20160831.apk
    Failure [INSTALL_FAILED_ALREADY_EXISTS]
    

    常见安装失败输出代码、含义及可能的解决办法如下:

    输出 含义 解决办法
    INSTALL_FAILED_ALREADY_EXISTS 应用已经存在,或卸载了但没卸载干净 adb install 时使用 -r 参数,或者先 adb uninstall <packagename> 再安装
    INSTALL_FAILED_INVALID_APK 无效的 APK 文件
    INSTALL_FAILED_INVALID_URI 无效的 APK 文件名 确保 APK 文件名里无中文
    INSTALL_FAILED_INSUFFICIENT_STORAGE 空间不足 清理空间
    INSTALL_FAILED_DUPLICATE_PACKAGE 已经存在同名程序
    INSTALL_FAILED_NO_SHARED_USER 请求的共享用户不存在
    INSTALL_FAILED_UPDATE_INCOMPATIBLE 以前安装过同名应用,但卸载时数据没有移除;或者已安装该应用,但签名不一致 adb uninstall <packagename> 再安装
    INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 请求的共享用户存在但签名不一致
    INSTALL_FAILED_MISSING_SHARED_LIBRARY 安装包使用了设备上不可用的共享库
    INSTALL_FAILED_REPLACE_COULDNT_DELETE 替换时无法删除
    INSTALL_FAILED_DEXOPT dex 优化验证失败或空间不足
    INSTALL_FAILED_OLDER_SDK 设备系统版本低于应用要求
    INSTALL_FAILED_CONFLICTING_PROVIDER 设备里已经存在与应用里同名的 content provider
    INSTALL_FAILED_NEWER_SDK 设备系统版本高于应用要求
    INSTALL_FAILED_TEST_ONLY 应用是 test-only 的,但安装时没有指定 -t 参数
    INSTALL_FAILED_CPU_ABI_INCOMPATIBLE 包含不兼容设备 CPU 应用程序二进制接口的 native code
    INSTALL_FAILED_MISSING_FEATURE 应用使用了设备不可用的功能
    INSTALL_FAILED_CONTAINER_ERROR 1. sdcard 访问失败;
    2. 应用签名与 ROM 签名一致,被当作内置应用。
    1. 确认 sdcard 可用,或者安装到内置存储;
    2. 打包时不与 ROM 使用相同签名。
    INSTALL_FAILED_INVALID_INSTALL_LOCATION 1. 不能安装到指定位置;
    2. 应用签名与 ROM 签名一致,被当作内置应用。
    1. 切换安装位置,添加或删除 -s 参数;
    2. 打包时不与 ROM 使用相同签名。
    INSTALL_FAILED_MEDIA_UNAVAILABLE 安装位置不可用 一般为 sdcard,确认 sdcard 可用或安装到内置存储
    INSTALL_FAILED_VERIFICATION_TIMEOUT 验证安装包超时
    INSTALL_FAILED_VERIFICATION_FAILURE 验证安装包失败
    INSTALL_FAILED_PACKAGE_CHANGED 应用与调用程序期望的不一致
    INSTALL_FAILED_UID_CHANGED 以前安装过该应用,与本次分配的 UID 不一致 清除以前安装过的残留文件
    INSTALL_FAILED_VERSION_DOWNGRADE 已经安装了该应用更高版本 使用 -d 参数
    INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE 已安装 target SDK 支持运行时权限的同名应用,要安装的版本不支持运行时权限
    INSTALL_PARSE_FAILED_NOT_APK 指定路径不是文件,或不是以 .apk 结尾
    INSTALL_PARSE_FAILED_BAD_MANIFEST 无法解析的 AndroidManifest.xml 文件
    INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION 解析器遇到异常
    INSTALL_PARSE_FAILED_NO_CERTIFICATES 安装包没有签名
    INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES 已安装该应用,且签名与 APK 文件不一致 先卸载设备上的该应用,再安装
    INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING 解析 APK 文件时遇到 CertificateEncodingException
    INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME manifest 文件里没有或者使用了无效的包名
    INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID manifest 文件里指定了无效的共享用户 ID
    INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解析 manifest 文件时遇到结构性错误
    INSTALL_PARSE_FAILED_MANIFEST_EMPTY 在 manifest 文件里找不到找可操作标签(instrumentation 或 application)
    INSTALL_FAILED_INTERNAL_ERROR 因系统问题安装失败
    INSTALL_FAILED_USER_RESTRICTED 用户被限制安装应用 在开发者选项里将「USB安装」打开,如果已经打开了,那先关闭再打开。
    INSTALL_FAILED_DUPLICATE_PERMISSION 应用尝试定义一个已经存在的权限名称
    INSTALL_FAILED_NO_MATCHING_ABIS 应用包含设备的应用程序二进制接口不支持的 native code
    INSTALL_CANCELED_BY_USER 应用安装需要在设备上确认,但未操作设备或点了取消 在设备上同意安装
    INSTALL_FAILED_ACWF_INCOMPATIBLE 应用程序与设备不兼容
    INSTALL_FAILED_TEST_ONLY APK 文件是使用 Android Studio 直接 RUN 编译出来的文件 通过 Gradle 的 assembleDebug 或 assembleRelease 重新编译,或者 Generate Signed APK
    does not contain AndroidManifest.xml 无效的 APK 文件
    is not a valid zip file 无效的 APK 文件
    Offline 设备未连接成功 先将设备与 adb 连接成功
    unauthorized 设备未授权允许调试
    error: device not found 没有连接成功的设备 先将设备与 adb 连接成功
    protocol failure 设备已断开连接 先将设备与 adb 连接成功
    Unknown option: -s Android 2.2 以下不支持安装到 sdcard 不使用 -s 参数
    No space left on device 空间不足 清理空间
    Permission denied … sdcard … sdcard 不可用
    signatures do not match the previously installed version; ignoring! 已安装该应用且签名不一致 先卸载设备上的该应用,再安装

    参考:PackageManager.java

    adb install 内部原理简介

    adb install 实际是分三步完成:

    1. push apk 文件到 /data/local/tmp。

    2. 调用 pm install 安装。

    3. 删除 /data/local/tmp 下的对应 apk 文件。

    所以,必要的时候也可以根据这个步骤,手动分步执行安装过程。

    卸载应用

    命令:

    adb uninstall [-k] <packagename>
    

    <packagename> 表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。

    命令示例:

    adb uninstall com.qihoo360.mobilesafe
    

    表示卸载 360 手机卫士。

    清除应用数据与缓存

    命令:

    adb shell pm clear <packagename>
    

    <packagename> 表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。

    命令示例:

    adb shell pm clear com.qihoo360.mobilesafe
    

    表示清除 360 手机卫士的数据和缓存。

    查看前台 Activity

    命令:

    adb shell dumpsys activity activities | grep mFocusedActivity
    

    输出示例:

    mFocusedActivity: ActivityRecord{8079d7e u0 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher t42}
    

    其中的 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher 就是当前处于前台的 Activity。

    查看正在运行的 Services

    命令:

    adb shell dumpsys activity services [<packagename>]
    

    <packagename> 参数不是必须的,指定 <packagename> 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。

    <packagename> 不一定要给出完整的包名,比如运行 adb shell dumpsys activity services org.mazhuang,那么包名 org.mazhuang.demo1org.mazhuang.demo2org.mazhuang123 等相关的 Services 都会列出来。

    查看应用详细信息

    命令:

    adb shell dumpsys package <packagename>
    

    输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。

    <packagename> 表示应用包名。

    输出示例:

    Activity Resolver Table:
      Non-Data Actions:
          android.intent.action.MAIN:
            5b4cba8 org.mazhuang.guanggoo/.SplashActivity filter 5ec9dcc
              Action: "android.intent.action.MAIN"
              Category: "android.intent.category.LAUNCHER"
              AutoVerify=false
    
    Registered ContentProviders:
      org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider:
        Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}
    
    ContentProvider Authorities:
      [org.mazhuang.guanggoo.fileProvider]:
        Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}
          applicationInfo=ApplicationInfo{7754242 org.mazhuang.guanggoo}
    
    Key Set Manager:
      [org.mazhuang.guanggoo]
          Signing KeySets: 501
    
    Packages:
      Package [org.mazhuang.guanggoo] (c1d7f):
        userId=10394
        pkg=Package{55f714c org.mazhuang.guanggoo}
        codePath=/data/app/org.mazhuang.guanggoo-2
        resourcePath=/data/app/org.mazhuang.guanggoo-2
        legacyNativeLibraryDir=/data/app/org.mazhuang.guanggoo-2/lib
        primaryCpuAbi=null
        secondaryCpuAbi=null
        versionCode=74 minSdk=15 targetSdk=25
        versionName=1.1.74
        splits=[base]
        apkSigningVersion=2
        applicationInfo=ApplicationInfo{7754242 org.mazhuang.guanggoo}
        flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
        privateFlags=[ RESIZEABLE_ACTIVITIES ]
        dataDir=/data/user/0/org.mazhuang.guanggoo
        supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
        timeStamp=2017-10-22 23:50:53
        firstInstallTime=2017-10-22 23:50:25
        lastUpdateTime=2017-10-22 23:50:55
        installerPackageName=com.miui.packageinstaller
        signatures=PackageSignatures{af09595 [53c7caa2]}
        installPermissionsFixed=true installStatus=1
        pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
        requested permissions:
          android.permission.READ_PHONE_STATE
          android.permission.INTERNET
          android.permission.ACCESS_NETWORK_STATE
          android.permission.ACCESS_WIFI_STATE
          android.permission.READ_LOGS
          android.permission.WRITE_EXTERNAL_STORAGE
          android.permission.READ_EXTERNAL_STORAGE
        install permissions:
          android.permission.INTERNET: granted=true
          android.permission.ACCESS_NETWORK_STATE: granted=true
          android.permission.ACCESS_WIFI_STATE: granted=true
        User 0: ceDataInode=1155675 installed=true hidden=false suspended=false stopped=true notLaunched=false enabled=0
          gids=[3003]
          runtime permissions:
            android.permission.READ_EXTERNAL_STORAGE: granted=true
            android.permission.READ_PHONE_STATE: granted=true
            android.permission.WRITE_EXTERNAL_STORAGE: granted=true
        User 999: ceDataInode=0 installed=false hidden=false suspended=false stopped=true notLaunched=true enabled=0
          gids=[3003]
          runtime permissions:
    
    
    Dexopt state:
      [org.mazhuang.guanggoo]
        Instruction Set: arm64
          path: /data/app/org.mazhuang.guanggoo-2/base.apk
          status: /data/app/org.mazhuang.guanggoo-2/oat/arm64/base.odex [compilation_filter=speed-profile, status=kOatUpToDa
          te]
    

    查看应用安装路径

    命令:

    adb shell pm path <PACKAGE>
    

    输出应用安装路径

    输出示例:

    adb shell pm path ecarx.weather
    
    package:/data/app/ecarx.weather-1.apk
    

    与应用交互

    主要是使用 am <command> 命令,常用的 <command> 如下:

    command 用途
    start [options] <INTENT> 启动 <INTENT> 指定的 Activity
    startservice [options] <INTENT> 启动 <INTENT> 指定的 Service
    broadcast [options] <INTENT> 发送 <INTENT> 指定的广播
    force-stop <packagename> 停止 <packagename> 相关的进程

    <INTENT> 参数很灵活,和写 Android 程序时代码里的 Intent 相对应。

    用于决定 intent 对象的选项如下:

    参数 含义
    -a <ACTION> 指定 action,比如 android.intent.action.VIEW
    -c <CATEGORY> 指定 category,比如 android.intent.category.APP_CONTACTS
    -n <COMPONENT> 指定完整 component 名,用于明确指定启动哪个 Activity,如 com.example.app/.ExampleActivity

    <INTENT> 里还能带数据,就像写代码时的 Bundle 一样:

    参数 含义
    --esn <EXTRA_KEY> null 值(只有 key 名)
    -e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> string 值
    --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> boolean 值
    --ei <EXTRA_KEY> <EXTRA_INT_VALUE> integer 值
    --el <EXTRA_KEY> <EXTRA_LONG_VALUE> long 值
    --ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> float 值
    --eu <EXTRA_KEY> <EXTRA_URI_VALUE> URI
    --ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE> component name
    --eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...] integer 数组
    --ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...] long 数组

    启动应用/ 调起 Activity

    命令格式:

    adb shell am start [options] <INTENT>
    

    例如:

    adb shell am start -n com.tencent.mm/.ui.LauncherUI
    

    表示调起微信主界面。

    adb shell am start -n com.jkwu.wsforever/.MainActivity
    

    表示调起包com.jkwu.wsforever主界面MainActivity。

    adb shell am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"
    

    表示调起 org.mazhuang.boottimemeasure/.MainActivity 并传给它 string 数据键值对 toast - hello, world

    调起 Service

    命令格式:

    adb shell am startservice [options] <INTENT>
    

    例如:

    adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
    

    表示调起微信的某 Service。

    另外一个典型的用例是如果设备上原本应该显示虚拟按键但是没有显示,可以试试这个:

    adb shell am startservice -n com.android.systemui/.SystemUIService
    

    停止 Service

    命令格式:

    adb shell am stopservice [options] <INTENT>
    

    发送广播

    命令格式:

    adb shell am broadcast [options] <INTENT>
    

    可以向所有组件广播,也可以只向指定组件广播。

    例如,向所有组件广播 BOOT_COMPLETED

    adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
    

    又例如,只向 org.mazhuang.boottimemeasure/.BootCompletedReceiver 广播 BOOT_COMPLETED

    adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver
    

    这类用法在测试的时候很实用,比如某个广播的场景很难制造,可以考虑通过这种方式来发送广播。

    既能发送系统预定义的广播,也能发送自定义广播。如下是部分系统预定义广播及正常触发时机:

    action 触发时机
    android.net.conn.CONNECTIVITY_CHANGE 网络连接发生变化
    android.intent.action.SCREEN_ON 屏幕点亮
    android.intent.action.SCREEN_OFF 屏幕熄灭
    android.intent.action.BATTERY_LOW 电量低,会弹出电量低提示框
    android.intent.action.BATTERY_OKAY 电量恢复了
    android.intent.action.BOOT_COMPLETED 设备启动完毕
    android.intent.action.DEVICE_STORAGE_LOW 存储空间过低
    android.intent.action.DEVICE_STORAGE_OK 存储空间恢复
    android.intent.action.PACKAGE_ADDED 安装了新的应用
    android.net.wifi.STATE_CHANGE WiFi 连接状态发生变化
    android.net.wifi.WIFI_STATE_CHANGED WiFi 状态变为启用/关闭/正在启动/正在关闭/未知
    android.intent.action.BATTERY_CHANGED 电池电量发生变化
    android.intent.action.INPUT_METHOD_CHANGED 系统输入法发生变化
    android.intent.action.ACTION_POWER_CONNECTED 外部电源连接
    android.intent.action.ACTION_POWER_DISCONNECTED 外部电源断开连接
    android.intent.action.DREAMING_STARTED 系统开始休眠
    android.intent.action.DREAMING_STOPPED 系统停止休眠
    android.intent.action.WALLPAPER_CHANGED 壁纸发生变化
    android.intent.action.HEADSET_PLUG 插入耳机
    android.intent.action.MEDIA_UNMOUNTED 卸载外部介质
    android.intent.action.MEDIA_MOUNTED 挂载外部介质
    android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启

    (以上广播均可使用 adb 触发)

    强制停止应用

    命令:

    adb shell am force-stop <packagename>
    

    命令示例:

    adb shell am force-stop com.qihoo360.mobilesafe
    

    表示停止 360 安全卫士的一切进程与服务。

    收紧内存

    命令:

    adb shell am send-trim-memory  <pid> <level>
    

    pid: 进程 ID
    level:
    HIDDEN、RUNNING_MODERATE、BACKGROUND、
    RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE

    命令示例:

    adb shell am send-trim-memory 12345 RUNNING_LOW
    

    表示向 pid=12345 的进程,发出 level=RUNNING_LOW 的收紧内存命令。

    文件管理

    复制设备里的文件到电脑

    命令:

    adb pull <设备里的文件路径> [电脑上的目录]
    

    其中 电脑上的目录 参数可以省略,默认复制到当前目录。

    例:

    adb pull /sdcard/sr.mp4 ~/tmp/
    

    *小技巧:*设备上的文件路径可能需要 root 权限才能访问,如果你的设备已经 root 过,可以先使用 adb shellsu 命令在 adb shell 里获取 root 权限后,先 cp /path/on/device /sdcard/filename 将文件复制到 sdcard,然后 adb pull /sdcard/filename /path/on/pc

    复制电脑里的文件到设备

    命令:

    adb push <电脑上的文件路径> <设备里的目录>
    

    例:

    adb push ~/sr.mp4 /sdcard/
    

    *小技巧:*设备上的文件路径普通权限可能无法直接写入,如果你的设备已经 root 过,可以先 adb push /path/on/pc /sdcard/filename,然后 adb shellsu 在 adb shell 里获取 root 权限后,cp /sdcard/filename /path/on/device

    模拟按键/输入

    adb shell 里有个很实用的命令叫 input,通过它可以做一些有趣的事情。

    input 命令的完整 help 信息如下:

    Usage: input [<source>] <command> [<arg>...]
    
    The sources are:
          mouse
          keyboard
          joystick
          touchnavigation
          touchpad
          trackball
          stylus
          dpad
          gesture
          touchscreen
          gamepad
    
    The commands and default sources are:
          text <string> (Default: touchscreen)
          keyevent [--longpress] <key code number or name> ... (Default: keyboard)
          tap <x> <y> (Default: touchscreen)
          swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
          press (Default: trackball)
          roll <dx> <dy> (Default: trackball)
    

    比如使用 adb shell input keyevent <keycode> 命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:

    keycode 含义
    3 HOME 键
    4 返回键
    5 打开拨号应用
    6 挂断电话
    24 增加音量
    25 降低音量
    26 电源键
    27 拍照(需要在相机应用里)
    64 打开浏览器
    82 菜单键
    85 播放/暂停
    86 停止播放
    87 播放下一首
    88 播放上一首
    122 移动光标到行首或列表顶部
    123 移动光标到行末或列表底部
    126 恢复播放
    127 暂停播放
    164 静音
    176 打开系统设置
    187 切换应用
    207 打开联系人
    208 打开日历
    209 打开音乐
    210 打开计算器
    220 降低屏幕亮度
    221 提高屏幕亮度
    223 系统休眠
    224 点亮屏幕
    231 打开语音助手
    276 如果没有 wakelock 则让系统休眠

    下面是 input 命令的一些用法举例。

    电源键

    命令:

    adb shell input keyevent 26
    

    执行效果相当于按电源键。

    菜单键

    命令:

    adb shell input keyevent 82
    

    HOME 键

    命令:

    adb shell input keyevent 3
    

    返回键

    命令:

    adb shell input keyevent 4
    

    音量控制

    增加音量:

    adb shell input keyevent 24
    

    降低音量:

    adb shell input keyevent 25
    

    静音:

    adb shell input keyevent 164
    

    媒体控制

    播放/暂停:

    adb shell input keyevent 85
    

    停止播放:

    adb shell input keyevent 86
    

    播放下一首:

    adb shell input keyevent 87
    

    播放上一首:

    adb shell input keyevent 88
    

    恢复播放:

    adb shell input keyevent 126
    

    暂停播放:

    adb shell input keyevent 127
    

    点亮/熄灭屏幕

    可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。

    点亮屏幕:

    adb shell input keyevent 224
    

    熄灭屏幕:

    adb shell input keyevent 223
    

    滑动解锁

    如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。

    命令(参数以机型 Nexus 5,向上滑动手势解锁举例):

    adb shell input swipe 300 1000 300 500
    

    参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标

    输入文本

    在焦点处于某文本框时,可以通过 input 命令来输入文本。

    命令:

    adb shell input text hello
    

    现在 hello 出现在文本框了。

    查看日志

    Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

    Android 日志

    命令格式:

    [adb] logcat [<option>] ... [<filter-spec>] ...
    

    常用用法列举如下:

    按级别过滤日志

    Android 的日志分为如下几个优先级(priority):

    • V —— Verbose(最低,输出得最多)
    • D —— Debug
    • I —— Info
    • W —— Warning
    • E —— Error
    • F —— Fatal
    • S —— Silent(最高,啥也不输出)

    按某级别过滤日志则会将该级别及以上的日志输出。
    比如,命令:

    adb logcat *:W
    

    会将 Warning、Error、Fatal 和 Silent 日志输出。

    注: 在 macOS 下需要给 *:W 这样以 * 作为 tag 的参数加双引号,如 adb logcat "*:W",不然会报错 no matches found: *:W。)

    按 tag 和级别过滤日志

    <filter-spec> 可以由多个 <tag>[:priority] 组成。

    比如,命令:

    adb logcat ActivityManager:I MyApp:D *:S
    

    表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

    日志格式

    可以用 adb logcat -v <format> 选项指定日志输出格式。

    日志支持按以下几种 <format>

    • brief

      默认格式。格式为:

      <priority>/<tag>(<pid>): <message>
      

      示例:

      D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
      
    • process

      格式为:

      <priority>(<pid>) <message>
      

      示例:

      D( 1785) Disconnected process message: 10, size: 0  (HeadsetStateMachine)
      
    • tag

      格式为:

      <priority>/<tag>: <message>
      

      示例:

      D/HeadsetStateMachine: Disconnected process message: 10, size: 0
      
    • raw

      格式为:

      <message>
      

      示例:

      Disconnected process message: 10, size: 0
      
    • time

      格式为:

      <datetime> <priority>/<tag>(<pid>): <message>
      

      示例:

      08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
      
    • threadtime

      格式为:

      <datetime> <pid> <tid> <priority> <tag>: <message>
      

      示例:

      08-28 22:39:39.974  1785  1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
      
    • long

      格式为:

      [ <datetime> <pid>:<tid> <priority>/<tag> ]
      <message>
      

      示例:

      [ 08-28 22:39:39.974  1785: 1832 D/HeadsetStateMachine ]
      Disconnected process message: 10, size: 0
      

    指定格式可与上面的过滤同时使用。比如:

    adb logcat -v long ActivityManager:I *:S
    

    清空日志

    adb logcat -c
    

    内核日志

    命令:

    adb shell dmesg
    

    输出示例:

    <6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs
    <6>[14201.685525] PM: early resume of devices complete after 0.838 msecs
    <6>[14201.753642] PM: resume of devices complete after 68.106 msecs
    <4>[14201.755954] Restarting tasks ... done.
    <6>[14201.771229] PM: suspend exit 2016-08-28 13:31:32.679217193 UTC
    <6>[14201.872373] PM: suspend entry 2016-08-28 13:31:32.780363596 UTC
    <6>[14201.872498] PM: Syncing filesystems ... done.
    

    中括号里的 [14201.684016] 代表内核开始启动后的时间,单位为秒。

    通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 Freeing init memory 那一行前面的时间就是。

    查看设备信息

    型号

    命令:

    adb shell getprop ro.product.model
    

    输出示例:

    Nexus 5
    

    电池状况

    命令:

    adb shell dumpsys battery
    

    输入示例:

    Current Battery Service state:
      AC powered: false
      USB powered: true
      Wireless powered: false
      status: 2
      health: 2
      present: true
      level: 44
      scale: 100
      voltage: 3872
      temperature: 280
      technology: Li-poly
    

    其中 scale 代表最大电量,level 代表当前电量。上面的输出表示还剩下 44% 的电量。

    屏幕分辨率

    命令:

    adb shell wm size
    

    输出示例:

    Physical size: 1080x1920
    

    该设备屏幕分辨率为 1080px * 1920px。

    如果使用命令修改过,那输出可能是:

    Physical size: 1080x1920
    Override size: 480x1024
    

    表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。

    屏幕密度

    命令:

    adb shell wm density
    

    输出示例:

    Physical density: 420
    

    该设备屏幕密度为 420dpi。

    如果使用命令修改过,那输出可能是:

    Physical density: 480
    Override density: 160
    

    表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。

    显示屏参数

    命令:

    adb shell dumpsys window displays
    

    输出示例:

    WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
      Display: mDisplayId=0
        init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
        deferred=false layoutNeeded=false
    

    其中 mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp。

    android_id

    命令:

    adb shell settings get secure android_id
    

    输出示例:

    51b6be48bac8c569
    

    IMEI

    在 Android 4.4 及以下版本可通过如下命令获取 IMEI:

    adb shell dumpsys iphonesubinfo
    

    输出示例:

    Phone Subscriber Info:
      Phone Type = GSM
      Device ID = 860955027785041
    

    其中的 Device ID 就是 IMEI。

    而在 Android 5.0 及以上版本里这个命令输出为空,得通过其它方式获取了(需要 root 权限):

    adb shell
    su
    service call iphonesubinfo 1
    

    输出示例:

    Result: Parcel(
      0x00000000: 00000000 0000000f 00360038 00390030 '........8.6.0.9.'
      0x00000010: 00350035 00320030 00370037 00350038 '5.5.0.2.7.7.8.5.'
      0x00000020: 00340030 00000031                   '0.4.1...        ')
    

    把里面的有效内容提取出来就是 IMEI 了,比如这里的是 860955027785041

    参考:adb shell dumpsys iphonesubinfo not working since Android 5.0 Lollipop

    Android 系统版本

    命令:

    adb shell getprop ro.build.version.release
    

    输出示例:

    5.0.2
    

    IP 地址

    每次想知道设备的 IP 地址的时候都得「设置」-「关于手机」-「状态信息」-「IP地址」很烦对不对?通过 adb 可以方便地查看。

    命令:

    adb shell ifconfig | grep Mask
    

    输出示例:

    inet addr:10.130.245.230  Mask:255.255.255.252
    inet addr:127.0.0.1  Mask:255.0.0.0
    

    那么 10.130.245.230 就是设备 IP 地址。

    在有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:

    adb shell ifconfig wlan0
    

    输出示例:

    wlan0: ip 10.129.160.99 mask 255.255.240.0 flags [up broadcast running multicast]
    

    wlan0     Link encap:UNSPEC
              inet addr:10.129.168.57  Bcast:10.129.175.255  Mask:255.255.240.0
              inet6 addr: fe80::66cc:2eff:fe68:b6b6/64 Scope: Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:496520 errors:0 dropped:0 overruns:0 frame:0
              TX packets:68215 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:3000
              RX bytes:116266821 TX bytes:8311736
    

    如果以上命令仍然不能得到期望的信息,那可以试试以下命令(部分系统版本里可用):

    adb shell netcfg
    

    输出示例:

    wlan0    UP                               10.129.160.99/20  0x00001043 f8:a9:d0:17:42:4d
    lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
    p2p0     UP                                     0.0.0.0/0   0x00001003 fa:a9:d0:17:42:4d
    sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
    rmnet0   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rmnet1   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rmnet3   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rmnet2   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rmnet4   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rmnet6   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rmnet5   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rmnet7   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
    rev_rmnet3 DOWN                                   0.0.0.0/0   0x00001002 4e:b7:e4:2e:17:58
    rev_rmnet2 DOWN                                   0.0.0.0/0   0x00001002 4e:f0:c8:bf:7a:cf
    rev_rmnet4 DOWN                                   0.0.0.0/0   0x00001002 a6:c0:3b:6b:c4:1f
    rev_rmnet6 DOWN                                   0.0.0.0/0   0x00001002 66:bb:5d:64:2e:e9
    rev_rmnet5 DOWN                                   0.0.0.0/0   0x00001002 0e:1b:eb:b9:23:a0
    rev_rmnet7 DOWN                                   0.0.0.0/0   0x00001002 7a:d9:f6:81:40:5a
    rev_rmnet8 DOWN                                   0.0.0.0/0   0x00001002 4e:e2:a9:bb:d0:1b
    rev_rmnet0 DOWN                                   0.0.0.0/0   0x00001002 fe:65:d0:ca:82:a9
    rev_rmnet1 DOWN                                   0.0.0.0/0   0x00001002 da:d8:e8:4f:2e:fe
    

    可以看到网络连接名称、启用状态、IP 地址和 Mac 地址等信息。

    Mac 地址

    命令:

    adb shell cat /sys/class/net/wlan0/address
    

    输出示例:

    f8:a9:d0:17:42:4d
    

    这查看的是局域网 Mac 地址,移动网络或其它连接的信息可以通过前面的小节「IP 地址」里提到的 adb shell netcfg 命令来查看。

    CPU 信息

    命令:

    adb shell cat /proc/cpuinfo
    

    输出示例:

    Processor       : ARMv7 Processor rev 0 (v7l)
    processor       : 0
    BogoMIPS        : 38.40
    
    processor       : 1
    BogoMIPS        : 38.40
    
    processor       : 2
    BogoMIPS        : 38.40
    
    processor       : 3
    BogoMIPS        : 38.40
    
    Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
    CPU implementer : 0x51
    CPU architecture: 7
    CPU variant     : 0x2
    CPU part        : 0x06f
    CPU revision    : 0
    
    Hardware        : Qualcomm MSM 8974 HAMMERHEAD (Flattened Device Tree)
    Revision        : 000b
    Serial          : 0000000000000000
    

    这是 Nexus 5 的 CPU 信息,我们从输出里可以看到使用的硬件是 Qualcomm MSM 8974,processor 的编号是 0 到 3,所以它是四核的,采用的架构是 ARMv7 Processor rev 0 (v71)

    内存信息

    命令:

    adb shell cat /proc/meminfo
    

    输出示例:

    MemTotal:        1027424 kB
    MemFree:          486564 kB
    Buffers:           15224 kB
    Cached:            72464 kB
    SwapCached:        24152 kB
    Active:           110572 kB
    Inactive:         259060 kB
    Active(anon):      79176 kB
    Inactive(anon):   207736 kB
    Active(file):      31396 kB
    Inactive(file):    51324 kB
    Unevictable:        3948 kB
    Mlocked:               0 kB
    HighTotal:        409600 kB
    HighFree:         132612 kB
    LowTotal:         617824 kB
    LowFree:          353952 kB
    SwapTotal:        262140 kB
    SwapFree:         207572 kB
    Dirty:                 0 kB
    Writeback:             0 kB
    AnonPages:        265324 kB
    Mapped:            47072 kB
    Shmem:              1020 kB
    Slab:              57372 kB
    SReclaimable:       7692 kB
    SUnreclaim:        49680 kB
    KernelStack:        4512 kB
    PageTables:         5912 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:      775852 kB
    Committed_AS:   13520632 kB
    VmallocTotal:     385024 kB
    VmallocUsed:       61004 kB
    VmallocChunk:     209668 kB
    

    其中,MemTotal 就是设备的总内存,MemFree 是当前空闲内存。

    更多硬件与系统属性

    设备的更多硬件与系统属性可以通过如下命令查看:

    adb shell cat /system/build.prop
    

    这会输出很多信息,包括前面几个小节提到的「型号」和「Android 系统版本」等。

    输出里还包括一些其它有用的信息,它们也可通过 adb shell getprop <属性名> 命令单独查看,列举一部分属性如下:

    属性名 含义
    ro.build.version.sdk SDK 版本
    ro.build.version.release Android 系统版本
    ro.build.version.security_patch Android 安全补丁程序级别
    ro.product.model 型号
    ro.product.brand 品牌
    ro.product.name 设备名
    ro.product.board 处理器型号
    ro.product.cpu.abilist CPU 支持的 abi 列表[节注一]
    persist.sys.isUsbOtgEnabled 是否支持 OTG
    dalvik.vm.heapsize 每个应用程序的内存上限
    ro.sf.lcd_density 屏幕密度

    节注一:

    一些小厂定制的 ROM 可能修改过 CPU 支持的 abi 列表的属性名,如果用 ro.product.cpu.abilist 属性名查找不到,可以这样试试:

    adb shell cat /system/build.prop | grep ro.product.cpu.abi
    

    示例输出:

    ro.product.cpu.abi=armeabi-v7a
    ro.product.cpu.abi2=armeabi
    

    修改设置

    注: 修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。

    修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。

    分辨率

    命令:

    adb shell wm size 480x1024
    

    表示将分辨率修改为 480px * 1024px。

    恢复原分辨率命令:

    adb shell wm size reset
    

    屏幕密度

    命令:

    adb shell wm density 160
    

    表示将屏幕密度修改为 160dpi。

    恢复原屏幕密度命令:

    adb shell wm density reset
    

    显示区域

    命令:

    adb shell wm overscan 0,0,0,200
    

    四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。

    恢复原显示区域命令:

    adb shell wm overscan reset
    

    关闭 USB 调试模式

    命令:

    adb shell settings put global adb_enabled 0
    

    恢复:

    用命令恢复不了了,毕竟关闭了 USB 调试 adb 就连接不上 Android 设备了。

    去设备上手动恢复吧:「设置」-「开发者选项」-「Android 调试」。

    允许/禁止访问非 SDK API

    允许访问非 SDK API:

    adb shell settings put global hidden_api_policy_pre_p_apps 1
    adb shell settings put global hidden_api_policy_p_apps 1
    

    禁止访问非 SDK API:

    adb shell settings delete global hidden_api_policy_pre_p_apps
    adb shell settings delete global hidden_api_policy_p_apps
    

    不需要设备获得 Root 权限。

    命令最后的数字的含义:

    含义
    0 禁止检测非 SDK 接口的调用。该情况下,日志记录功能被禁用,并且令 strict mode API,即 detectNonSdkApiUsage() 无效。不推荐。
    1 仅警告——允许访问所有非 SDK 接口,但保留日志中的警告信息,可继续使用 strick mode API。
    2 禁止调用深灰名单和黑名单中的接口。
    3 禁止调用黑名单中的接口,但允许调用深灰名单中的接口。

    状态栏和导航栏的显示隐藏

    本节所说的相关设置对应 Cyanogenmod 里的「扩展桌面」。

    命令:

    adb shell settings put global policy_control <key-values>
    

    <key-values> 可由如下几种键及其对应的值组成,格式为 <key1>=<value1>:<key2>=<value2>

    key 含义
    immersive.full 同时隐藏
    immersive.status 隐藏状态栏
    immersive.navigation 隐藏导航栏
    immersive.preconfirms ?

    这些键对应的值可则如下值用逗号组合:

    value 含义
    apps 所有应用
    * 所有界面
    packagename 指定应用
    -packagename 排除指定应用

    例如:

    adb shell settings put global policy_control immersive.full=*
    

    表示设置在所有界面下都同时隐藏状态栏和导航栏。

    adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
    

    表示设置在包名为 com.package1com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。

    实用功能

    屏幕截图

    截图保存到电脑:

    adb exec-out screencap -p > sc.png
    

    如果 adb 版本较老,无法使用 exec-out 命令,这时候建议更新 adb 版本。无法更新的话可以使用以下麻烦点的办法:

    先截图保存到设备里:

    adb shell screencap -p /sdcard/sc.png
    

    然后将 png 文件导出到电脑:

    adb pull /sdcard/sc.png
    

    可以使用 adb shell screencap -h 查看 screencap 命令的帮助信息,下面是两个有意义的参数及含义:

    参数 含义
    -p 指定保存文件为 png 格式
    -d display-id 指定截图的显示屏编号(有多显示屏的情况下)

    实测如果指定文件名以 .png 结尾时可以省略 -p 参数;否则需要使用 -p 参数。如果不指定文件名,截图文件的内容将直接输出到 stdout。

    另外一种一行命令截图并保存到电脑的方法:

    Linux 和 Windows

    adb shell screencap -p | sed "s/\r$//" > sc.png
    

    Mac OS X

    adb shell screencap -p | gsed "s/\r$//" > sc.png
    

    这个方法需要用到 gnu sed 命令,在 Linux 下直接就有,在 Windows 下 Git 安装目录的 bin 文件夹下也有。如果确实找不到该命令,可以下载 sed for Windows 并将 sed.exe 所在文件夹添加到 PATH 环境变量里。

    而在 Mac 下使用系统自带的 sed 命令会报错:

    sed: RE error: illegal byte sequence
    

    需要安装 gnu-sed,然后使用 gsed 命令:

    brew install gnu-sed
    

    录制屏幕

    录制屏幕以 mp4 格式保存到 /sdcard:

    adb shell screenrecord /sdcard/filename.mp4
    

    需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。

    如果需要导出到电脑:

    adb pull /sdcard/filename.mp4
    

    可以使用 adb shell screenrecord --help 查看 screenrecord 命令的帮助信息,下面是常见参数及含义:

    参数 含义
    –size WIDTHxHEIGHT 视频的尺寸,比如 1280x720,默认是屏幕分辨率。
    –bit-rate RATE 视频的比特率,默认是 4Mbps。
    –time-limit TIME 录制时长,单位秒。
    –verbose 输出更多信息。

    重新挂载 system 分区为可写

    注:需要 root 权限。

    /system 分区默认挂载为只读,但有些操作比如给 Android 系统添加命令、删除自带应用等需要对 /system 进行写操作,所以需要重新挂载它为可读写。

    步骤:

    1. 进入 shell 并切换到 root 用户权限。

      命令:

      adb shell
      su
      
    2. 查看当前分区挂载情况。

      命令:

      mount
      

      输出示例:

      rootfs / rootfs ro,relatime 0 0
      tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
      devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
      proc /proc proc rw,relatime 0 0
      sysfs /sys sysfs rw,seclabel,relatime 0 0
      selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
      debugfs /sys/kernel/debug debugfs rw,relatime 0 0
      none /var tmpfs rw,seclabel,relatime,mode=770,gid=1000 0 0
      none /acct cgroup rw,relatime,cpuacct 0 0
      none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
      none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
      tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
      tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
      none /dev/memcg cgroup rw,relatime,memory 0 0
      none /dev/cpuctl cgroup rw,relatime,cpu 0 0
      none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
      none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
      none /sys/fs/cgroup/freezer cgroup rw,relatime,freezer 0 0
      /dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
      /dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
      /dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
      /dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
      /dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
      /dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
      /dev/fuse /mnt/shell/emulated/0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
      

      找到其中我们关注的带 /system 的那一行:

      /dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
      
    3. 重新挂载。

      命令:

      mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system
      

      这里的 /dev/block/platform/msm_sdcc.1/by-name/system 就是我们从上一步的输出里得到的文件路径。

    如果输出没有提示错误的话,操作就成功了,可以对 /system 下的文件为所欲为了。

    查看连接过的 WiFi 密码

    注:需要 root 权限。

    命令:

    adb shell
    su
    cat /data/misc/wifi/*.conf
    

    输出示例:

    network={
    	ssid="TP-LINK_9DFC"
    	scan_ssid=1
    	psk="123456789"
    	key_mgmt=WPA-PSK
    	group=CCMP TKIP
    	auth_alg=OPEN
    	sim_num=1
    	priority=13893
    }
    
    network={
    	ssid="TP-LINK_F11E"
    	psk="987654321"
    	key_mgmt=WPA-PSK
    	sim_num=1
    	priority=17293
    }
    

    ssid 即为我们在 WLAN 设置里看到的名称,psk 为密码,key_mgmt 为安全加密方式。

    设置系统日期和时间

    注:需要 root 权限。

    命令:

    adb shell
    su
    date -s 20160823.131500
    

    表示将系统日期和时间更改为 2016 年 08 月 23 日 13 点 15 分 00 秒。

    重启手机

    命令:

    adb reboot
    

    检测设备是否已 root

    命令:

    adb shell
    su
    

    此时命令行提示符是 $ 则表示没有 root 权限,是 # 则表示已 root。

    使用 Monkey 进行压力测试

    Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

    简单用法:

    adb shell monkey -p <packagename> -v 500
    

    表示向 <packagename> 指定的应用程序发送 500 个伪随机事件。

    Monkey 的详细用法参考 官方文档

    开启/关闭 WiFi

    注:需要 root 权限。

    有时需要控制设备的 WiFi 状态,可以用以下指令完成。

    开启 WiFi:

    adb root
    adb shell svc wifi enable
    

    关闭 WiFi:

    adb root
    adb shell svc wifi disable
    

    若执行成功,输出为空;若未取得 root 权限执行此命令,将执行失败,输出 Killed

    刷机相关命令

    重启到 Recovery 模式

    命令:

    adb reboot recovery
    

    从 Recovery 重启到 Android

    命令:

    adb reboot
    

    重启到 Fastboot 模式

    命令:

    adb reboot bootloader
    

    通过 sideload 更新系统

    如果我们下载了 Android 设备对应的系统更新包到电脑上,那么也可以通过 adb 来完成更新。

    以 Recovery 模式下更新为例:

    1. 重启到 Recovery 模式。

      命令:

      adb reboot recovery
      
    2. 在设备的 Recovery 界面上操作进入 Apply update-Apply from ADB

      注:不同的 Recovery 菜单可能与此有差异,有的是一级菜单就有 Apply update from ADB

    3. 通过 adb 上传和更新系统。

      命令:

      adb sideload <path-to-update.zip>
      

    安全相关命令

    启用/禁用 SELinux

    启用 SELinux

    adb root
    adb shell setenforce 1
    

    禁用 SELinux

    adb root
    adb shell setenforce 0
    

    启用/禁用 dm_verity

    启用 dm_verity

    adb root
    adb enable-verity
    

    禁用 dm_verity

    adb root
    adb disable-verity
    

    更多 adb shell 命令

    Android 系统是基于 Linux 内核的,所以 Linux 里的很多命令在 Android 里也有相同或类似的实现,在 adb shell 里可以调用。本文档前面的部分内容已经用到了 adb shell 命令。

    查看进程

    命令:

    adb shell ps
    

    输出示例:

    USER     PID   PPID  VSIZE  RSS     WCHAN    PC        NAME
    root      1     0     8904   788   ffffffff 00000000 S /init
    root      2     0     0      0     ffffffff 00000000 S kthreadd
    ...
    u0_a71    7779  5926  1538748 48896 ffffffff 00000000 S com.sohu.inputmethod.sogou:classic
    u0_a58    7963  5926  1561916 59568 ffffffff 00000000 S org.mazhuang.boottimemeasure
    ...
    shell     8750  217   10640  740   00000000 b6f28340 R ps
    

    各列含义:

    列名 含义
    USER 所属用户
    PID 进程 ID
    PPID 父进程 ID
    NAME 进程名

    查看实时资源占用情况

    命令:

    adb shell top
    

    输出示例:

    User 0%, System 6%, IOW 0%, IRQ 0%
    User 3 + Nice 0 + Sys 21 + Idle 280 + IOW 0 + IRQ 0 + SIRQ 3 = 307
    
      PID PR CPU% S  #THR     VSS     RSS PCY UID      Name
     8763  0   3% R     1  10640K   1064K  fg shell    top
      131  0   3% S     1      0K      0K  fg root     dhd_dpc
     6144  0   0% S   115 1682004K 115916K  fg system   system_server
      132  0   0% S     1      0K      0K  fg root     dhd_rxf
     1731  0   0% S     6  20288K    788K  fg root     /system/bin/mpdecision
      217  0   0% S     6  18008K    356K  fg shell    /sbin/adbd
     ...
     7779  2   0% S    19 1538748K  48896K  bg u0_a71   com.sohu.inputmethod.sogou:classic
     7963  0   0% S    18 1561916K  59568K  fg u0_a58   org.mazhuang.boottimemeasure
     ...
    

    各列含义:

    列名 含义
    PID 进程 ID
    PR 优先级
    CPU% 当前瞬间占用 CPU 百分比
    S 进程状态(R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
    #THR 线程数
    VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
    RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
    PCY 调度策略优先级,SP_BACKGROUND/SPFOREGROUND
    UID 进程所有者的用户 ID
    NAME 进程名

    top 命令还支持一些命令行参数,详细用法如下:

    Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
        -m num  最多显示多少个进程
        -n num  刷新多少次后退出
        -d num  刷新时间间隔(单位秒,默认值 5)
        -s col  按某列排序(可用 col 值:cpu, vss, rss, thr)
        -t      显示线程信息
        -h      显示帮助文档
    

    查看进程 UID

    有两种方案:

    1. adb shell dumpsys package <packagename> | grep userId=

      如:

      $ adb shell dumpsys package org.mazhuang.guanggoo | grep userId=
         userId=10394
      
    2. 通过 ps 命令找到对应进程的 pid 之后 adb shell cat /proc/<pid>/status | grep Uid

      如:

      $ adb shell
      gemini:/ $ ps | grep org.mazhuang.guanggoo
      u0_a394   28635 770   1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo
      gemini:/ $ cat /proc/28635/status | grep Uid
      Uid:    10394   10394   10394   10394
      gemini:/ $
      

    其它

    如下是其它常用命令的简单描述,前文已经专门讲过的命令不再额外说明:

    命令 功能
    cat 显示文件内容
    cd 切换目录
    chmod 改变文件的存取模式/访问权限
    df 查看磁盘空间使用情况
    grep 过滤输出
    kill 杀死指定 PID 的进程
    ls 列举目录内容
    mount 挂载目录的查看和管理
    mv 移动或重命名文件
    ps 查看正在运行的进程
    rm 删除文件
    top 查看进程的资源占用情况

    常见问题

    启动 adb server 失败

    出错提示

    error: protocol fault (couldn't read status): No error
    

    可能原因

    adb server 进程想使用的 5037 端口被占用。

    解决方案

    找到占用 5037 端口的进程,然后终止它。以 Windows 下为例:

    netstat -ano | findstr LISTENING
    
    ...
    TCP    0.0.0.0:5037           0.0.0.0:0              LISTENING       1548
    ...
    

    这里 1548 即为进程 ID,用命令结束该进程:

    taskkill /PID 1548
    

    然后再启动 adb 就没问题了。

    com.android.ddmlib.AdbCommandRejectedException

    在 Android Studio 里新建一个模拟器,但是用 adb 一直连接不上,提示:

    com.android.ddmlib.AdbCommandRejectedException: device unauthorized.
    This adb server's $ADB_VENDOR_KEYS is not set
    Try 'adb kill-server' if that seems wrong.
    Otherwise check for a confirmation dialog on your device.
    

    在手机上安装一个终端然后执行 su 提示没有该命令,这不正常。

    于是删除该模拟器后重新下载安装一次,这次就正常了。

    adb 的非官方实现

    • fb-adb - A better shell for Android devices (for Mac).

    相关命令

    参考链接

    展开全文
  • 虚幻引擎4控制台变量和命令

    千次阅读 2018-07-17 17:52:22
    虚幻引擎4控制台变量和命令 原文链接:https://digilander.libero.it/ZioYuri78/   名称 帮帮我 r.AccelPredrawBatchTime 当显示加载屏幕或类似的时候覆盖r.PredrawBatchTime的值以在玩家不会注意时执行...

    虚幻引擎4控制台变量和命令

    原文链接:https://digilander.libero.it/ZioYuri78/

     

    名称 帮帮我
    r.AccelPredrawBatchTime 当显示加载屏幕或类似的时候覆盖r.PredrawBatchTime的值以在玩家不会注意时执行更多工作,或者0来使用r.PredrawBatchTime。默认为0。
    r.AccelTargetPrecompileFrameTime 当显示加载屏幕或类似的时候覆盖r.TargetPrecompileFrameTime的值以在玩家不会注意时执行更多工作,或者0来使用r.TargetPrecompileFrameTime。默认为0。
    r.AllowCachedUniformExpressions 允许缓存统一表达式。
    r.AllowDepthBoundsTest 如果为true,则在渲染延迟光时使用启用深度边界测试。
    r.AllowGlobalClipPlane 启用网格着色器以支持平面反射所需的全局剪裁平面,从而在PS4上增加约15%的BasePass GPU成本。
    r.AllowLandscapeShadows 允许风景阴影
    r.AllowOcclusionQueries 如果为零,则不会使用遮挡查询来剔除基元。
    r.AllowPointLightCubemapShadows 当为0时,将防止点光源立方体贴图阴影被使用,并且光线将没有阴影。
    r.AllowPrecomputedVisibility 如果为零,则预计算可见性将不会用于剔除基元。
    r.AllowSimpleLights 如果为真,我们允许简单(即粒子)灯
    r.AllowStaticLighting 是否允许生成和使用任何静态光照,如光照贴图和阴影贴图。
    仅使用动态光照的游戏应将此值设置为0以节省一些静态照明开销。
    r.AllowSubPrimitiveQueries 启用子原语查询,目前仅由分层实例化静态网格使用。1:启用,0禁用。禁用时,一个查询用于整个代理。
    r.AllReceiveDynamicCSM 哪些基元应该只接收动态CSM阴影。0:仅标记为bReceiveCSMFromDynamicObjects的基元。1:所有原语(默认)
    r.AlsoUseSphereForFrustumCull 性能调整。如果> 0,则在截止框之前和之后使用球体剔除。
    r.AmbientOcclusion.AsyncComputeBudget 定义用于平衡AsyncCompute与Gfx工作的EAsyncComputeBudget级别。
    仅在SSAO的计算版本处于活动状态时才需要考虑(需要CS支持,由cvar启用,单通道,无法线)
    这是一个低级开发人员调整,以便在支持AsyncCompute的硬件上获得最佳性能。
    0:最少AsyncCompute 
    1:..(默认)
    2:.. 
    3:.. 
    4:大多数AsyncCompute
    r.AmbientOcclusion.Compute 如果SSAO应使用ComputeShader(并非在所有平台上都可用)或PixelShader。
    [异步]计算着色器版本是WIP,未经优化,需要硬件支持(不是移动/ DX10 / OpenGL3),
    不使用允许它在EarlyZPass之后运行的法线(与AyncCompute 
    一起使用时性能更佳)AyncCompute目前只能运行在PS4上。
    0:PixelShader(默认值)
    1:(WIP)如果可能,使用ComputeShader,否则回退到' 
    0'2:(WIP)如果有效则使用AsyncCompute,否则回退到' 
    1'3:(WIP)如果可能,使用AsyncCompute,否则回落到'1'
    r.AmbientOcclusion.FadeRadiusScale 允许缩放环境遮挡淡入淡出半径(SSAO)。
    0.01:最小.. 1.0:正常(默认),<1:更小,> 1:更大
    r.AmbientOcclusionLevels 定义在环境光遮挡计算期间使用的mip级别数。这在调整算法时很有用。
    <0:根据后处理设置/体积中的质量设置和r.AmbientOcclusionMaxQuality(默认值)决定
    0:无(禁用AmbientOcclusion)
    1:一个
    2:2(成本额外性能,软添加)
    3:三(半径成本更大)少但可以闪烁)
    r.AmbientOcclusionMaxQuality 从ScreenSpace Ambient Occlusion 
    100 的后期处理量质量级别定义最大夹紧值:不要覆盖后期处理量的质量级别(默认)
    0..99:将后期处理量的质量级别限制为最大值通过这个cvar 
    -100..0:即使后处理体积要求较低的质量,也要强制使用不同的质量(绝对值)。
    r.AmbientOcclusionMipLevelFactor 根据SSAO步骤ID 
    0 控制mipmap级别:始终查看HZB mipmap级别0(内存缓存垃圾)
    0.5:样本计数取决于后期处理设置(默认)
    1:进入更高的mipmap级别(质量丢失)
    r.AmbientOcclusionRadiusScale 允许缩放环境遮挡半径(SSAO)。
    0:关闭,1.0:正常,<1:更小,> 1:更大
    r.AmbientOcclusionStaticFraction 允许覆盖Ambient Occlusion静态分数(请参阅后期处理量)。分数介于0和1之间。
    <0:使用默认设置(默认
    值为-1)0:对静态光照没有影响,0为空闲意味着没有额外渲染传递
    1:AO影响统计照明
    r.AMDD3D11MultiThreadedDevice 如果为true,则在AMD硬件上创建多线程D3D11设备(驱动程序错误的解决方法)
    更改仅在新游戏/编辑器实例中生效 - 无法在运行时更改。
    r.AMDDisableAsyncTextureCreation 如果为true,则在AMD硬件上使用同步纹理创建(驱动程序错误的解决方法)
    更改仅在新游戏/编辑器实例中生效 - 无法在运行时更改。
    r.Android.DisableOpenGLES31Support 禁用对OpenGLES 3.1 API的支持。(仅限Android)
    0 =将使用OpenGLES 3.1 API(提供设备和项目支持)[默认] 
    1 =将禁用OpenGLES 3.1,将使用OpenGL ES2后退。
    r.Android.DisableVulkanSupport 禁用对vulkan API的支持。(仅限Android)
    0 =将使用vulkan API(提供设备和项目支持)[默认] 
    1 =将禁用vulkan,将使用opengl后退。
    r.AndroidDisableThreadedRendering 设置是否允许特定Android设备配置文件的线程呈现。
    0 =允许线程呈现[默认] 
    1 =在启动时禁用创建呈现线程
    r.AOApplyToStaticIndirect 是否将DFAO作为间接阴影应用于静态间接源(光照贴图+固定天窗+反射捕获)
    r.AOAsyncBuildQueue 是否从网格中异步构建距离场体积数据。
    r.AOClearCache  
    r.AOComputeShaderNormalCalculation 是否使用距离场正常计算的计算着色器版本。
    r.AOFillGaps 是否使用屏幕空间过滤器填充像素,该过滤器没有来自表面高速缓存样本的有效世界空间插值权重。
    只要r.AOMinLevel不为0,就需要这样做。
    r.AOFillGapsHighQuality 是否使用更高质量的间隙填充方法进行5x5聚集,或者更便宜的方法只查找4个网格样本。
    r.AOGlobalDFClipmapDistanceExponent 用于导出每个剪贴图大小的exponent,以及r.AOInnerGlobalDFClipmapDistance。
    r.AOGlobalDFResolution 全球距离场的分辨率。较高的值会增加保真度,但也会增加内存和组合成本。
    r.AOGlobalDFStartDistance 沿锥形轨迹的世界空间距离切换到使用全局距离场而不是对象距离场。
    这必须足够大以隐藏全局距离场的低res特性,但是较小的值会导致更快的锥形跟踪。
    r.AOGlobalDistanceField 是否使用全局距离场来优化遮挡锥迹线。
    全局距离场是通过在观察者穿过关卡时将对象距离场合成到剪贴板中而创建的。
    r.AOGlobalDistanceFieldLogModifiedPrimitives 是否记录导致更新全局距离字段的原始修改(添加,删除,更新转换)。
    这对于追踪为什么更新全局距离字段总是花费大量成本非常有用,因为它应该主要是缓存的。
    r.AOGlobalDistanceFieldPartialUpdates 是否允许部分更新全局距离字段。在分析时,禁用它并获得相机切割时发生的最坏情况合成时间非常有用。
    r.AOGlobalDistanceFieldRepresentHeightfields 是否将景观置于全球距离场。更改此值不会传播,直到全局距离字段被记录(飞离和返回)。
    r.AOGlobalDistanceFieldStaggeredUpdates 是否允许更频繁地更新较大的剪贴图。
    r.AOHeightfieldOcclusion 是否从高度场(风景)计算AO
    r.AOHistoryDistanceThreshold 丢弃最后帧的DFAO结果所需的世界空间距离阈值。较低的值可减少靠近墙壁时角色的重影,但会增加闪烁伪影。
    r.AOHistoryStabilityPass 是否收集稳定的结果以填补时间重投影的漏洞。增加了一些GPU成本,但通过树叶提高了时间稳定性。
    r.AOHistoryWeight 最后帧的AO量到最终结果。较高的值会增加稳定性,较低的值会在封堵器移动时具有较少的条纹。
    r.AOInterpolationAngleScale 在最终插值过程中应用于角度误差的比例。大于1的值会导致平滑。
    r.AOInterpolationDepthTesting 是否在插值splat pass期间使用深度测试,对调试很有用
    r.AOInterpolationMaxAngle 在着色点的法线和附近记录的法线之间允许的最大角度。
    r.AOInterpolationRadiusScale 在最终插值过程中应用于记录半径的比例。大于1的值会导致世界空间平滑。
    r.AOInterpolationStencilTesting 是否从插值splat通道中输出远距离像素,对调试很有用
    r.AOListMemory  
    r.AOLogObjectBufferReallocation  
    r.AOMaxLevel 用于表面缓存填充的最大下采样功率为4。
    r.AOMaxObjectBoundingRadius 大于此的对象不会有助于AO计算,以提高性能。
    r.AOMaxViewDistance AO计算的最大距离。
    r.AOMinLevel 用于表面缓存填充的最小下采样功率为4。
    默认值为1,这意味着将从缓存或着色中检查每8个全分辨率像素(BaseDownsampleFactor(2)* 4 ^ 1)的有效插值。
    降低到0会减少混叠,并且无需填充间隙,但成本很高。
    r.AOMinPointBehindPlaneAngle 一个点可以位于记录后面的最小角度,仍然被视为有效。
    此阈值有助于减少在着色点前插入记录时发生的泄漏,忽略其间的阻塞。
    r.AOOverwriteSceneColor  
    r.AOPowerOfTwoBetweenLevels 表面缓存的细化级别之间的分辨率为2
    r.AORecordRadiusScale 应用缩放到最小遮挡距离以产生记录半径。这有效地控制了阴影样本的密集程度。
    r.AOReuseAcrossFrames 是否允许跨帧重用表面缓存结果。
    r.AOSampleSet 0 =原始设置,1 =轻松设置
    r.AOScatterTileCulling 是否使用光栅化器将封堵器对象合并到屏幕空间切片中。
    r.AOSpecularOcclusionMode 确定DFAO应如何遮挡高光的方式
    0:将非方向AO应用于高光。
    1 :(默认)将反射锥与DFAO生成的未遮挡锥相交。这提供了比0更准确的遮挡,但是可以产生DFAO采样伪像。
    2 :(实验)沿着反射矢量通过距离场的锥形轨迹。成本与DFAO大致相同,因为更多的锥形跟踪已完成,但会产生更准确的遮挡。
    r.AOStepExponentScale 用于沿锥形方向分布AO样本的指数。
    r.AOTrimOldRecordsFraction 启用r.AOReuseAcrossFrames时,这是最后一帧不会重复使用的表面缓存记录的一部分。
    低设置可提供更好的性能,而接近1的值可在动态场景发生变化时提供更快的照明更新。
    r.AOUpdateGlobalDistanceField 是否更新全局距离字段,对调试很有用。
    r.AOUseConesForGI  
    r.AOUseHistory 是否对距离场AO应用时间滤波器,这会减少闪烁,但也会在遮挡物移动时添加路径。
    r.AOUseJitter 是否使用4x时间超级采样与屏幕网格DFAO。禁用抖动时,可以使用较短的历史记录,但会有更多的空间别名。
    r.AOUseSurfaceCache 是否使用曲面缓存或屏幕网格进行锥形跟踪。屏幕网格具有更稳定的性能特征。
    r.AOViewFadeDistanceScale AO在接近r.AOMaxViewDistance时淡出的距离,作为r.AOMaxViewDistance的一小部分。
    r.AOVisualizeGlobalDistanceField 是否使用“网格距离字段”可视化模式可视化全局距离字段而不是对象DF
    r.Atmosphere 定义气氛将呈现与否。仅由r.Atmosphere控制台命令更改。
    启用/禁用大气,加载/卸载相关数据。
    0:关闭(保存GPU内存)
    1:开启(默认)
    r.BasePassOutputsVelocity 允许在基础传递上渲染WPO速度。
    0:在单独的pass / rendertarget中渲染,所有可移动的静态网格+动态。
    1:在常规基本传递期间渲染,添加额外的GBuffer,但允许使用基于时间的WPO的材质上的运动模糊。
    r.BlackBorders 要在渲染图像周围绘制黑色边框
    (防止从图像外部读取的后期处理过程中的伪像,例如PostProcessAA),
    以像素为单位,0:关闭
    r.Bloom.Cross 实验性特征为绽放内核提供更明亮的中心样本(1到3之间的值工作而不会产生混叠)
    现有的绽放降低以匹配相同的亮度
    <0用于同形镜头光斑外观(仅X)
    0关(默认)
    > 0用于交叉外观(X和Y)
    r.BloomQuality 0:关闭,没有性能影响。
    1:平均质量,性能影响最小。
    2:平均质量,性能影响最小。
    3:质量好。
    4:质量好。
    5:最佳质量,最重要的性能影响。(默认)
    > 5:在移动设备上强制实验性更高(在某些硬件上可能会相当慢)
    r.BufferVisualizationDumpFrames 当请求屏幕截图或电影转储时,还要保存当前缓冲区可视化材料的转储
    0:关闭(默认)
    1:开
    r.BufferVisualizationDumpFramesAsHDR 以HDR格式保存缓冲区可视化材料时
    0:不要覆盖默认保存格式。
    1:强制缓冲可视化材料的HDR格式。
    r.BufferVisualizationOverviewTargets 指定可在缓冲区可视化概述中使用的后期处理材料列表。在逗号之间没有任何内容可以留下空白。

    选择:

    BaseColor 
    CustomDepth 
    CustomStencil 
    FinalImage 
    ShadingModel 
    MaterialAO 
    金属
    透明度
    粗糙度
    SceneColor 
    SceneDepth 
    SeparateTranslucencyRGB 
    SeparateTranslucencyA 
    镜面
    SubsurfaceColor 
    WorldNormal 
    AmbientOcclusion 
    CustomDepthWorldUnits 
    SceneDepthWorldUnits 
    PreTonemapHDRColor 
    PostTonemapHDRColor
    r.BufferVisualizationTarget 当视口视图模式设置为“缓冲区可视化”时,此命令指定要显示的各种通道中的哪一个。输入的值不是下面显示的允许值,将被忽略。
    BaseColor 
    CustomDepth 
    CustomStencil 
    FinalImage 
    ShadingModel 
    MaterialAO 
    金属
    透明度
    粗糙度
    SceneColor 
    SceneDepth 
    SeparateTranslucencyRGB 
    SeparateTranslucencyA 
    镜面
    SubsurfaceColor 
    WorldNormal 
    AmbientOcclusion 
    CustomDepthWorldUnits 
    SceneDepthWorldUnits 
    PreTonemapHDRColor 
    PostTonemapHDRColor
    r.Cache.DrawDirectionalShadowing 是否绘制由Lightmass生成的直接阴影采样点。
    0关闭(默认),1打开
    r.Cache.DrawInterpolationPoints 是否绘制间接光照在更新时插入的位置,这些位置存储在缓存中。
    可能还需要'r.CacheUpdateEveryFrame 1'才有用,否则点会在更新时闪烁。
    0关闭(默认),1打开
    r.Cache.DrawLightingSamples 是否绘制由Lightmass生成的间接照明采样点。
    0关闭(默认),1打开
    r.Cache.LightingCacheDimension 照明缓存的尺寸。这应该是r.LightingCacheMovableObjectAllocationSize的倍数,以减少浪费。
    r.Cache.LightingCacheMovableObjectAllocationSize 用于点亮动态对象的插值样本体积的分辨率。 
    值1或2将导致每个对象的单个插值样本在移动时不提供连续照明,因此随着时间的推移进行插值。 
    3或更大的值支持必要的填充以在移动下提供连续的结果。
    r.Cache.LimitQuerySize 0关闭,1打开(默认)
    r.Cache.QueryNodeLevel 光照样本八叉树的级别,其节点的范围应该是查询到八叉树的目标大小。
    如果原始块大于此,则将分解为多个八叉树查询.0是根,12是叶级别
    r.Cache.ReduceSHRinging 是否修改间接照明缓存SH样本以减少振铃。0关闭,1打开(默认)
    r.Cache.SampleTransitionSpeed 使用单个样本照明时,控制两个点样本之间的过渡速度(随时间变化)。
    r.Cache.UpdateEveryFrame 是否每帧更新间接照明缓存分配,即使它们已被缓存。0关闭(默认),1打开
    r.Cache.UpdatePrimsTaskEnabled 为ILC原语更新启用线程。将与InitView的末尾重叠。
    r.CapsuleIndirectConeAngle 间接阴影方向来自预先计算的间接照明时使用的光源角度(不存在固定天窗)
    r.CapsuleMaxDirectOcclusionDistance 胶囊直接阴影的最大投射距离。这对性能有很大影响。
    r.CapsuleMaxIndirectOcclusionDistance 胶囊间接阴影的最大投射距离。这对性能有很大影响。
    r.CapsuleMinSkyAngle 从预先计算的未被遮挡的天空矢量(固定天窗存在)导出的最小光源角度
    r.CapsuleShadowFadeAngleFromVertical 从垂直向上的角度开始淡出间接阴影,以避免自阴影伪影。
    r.CapsuleShadows 是否允许使用bCastCapsuleDirectShadow或bCastCapsuleIndirectShadow启用蒙皮组件上的胶囊阴影。
    r.CapsuleShadowsFullResolution 是否以全分辨率计算胶囊阴影。
    r.CapsuleSkyAngleScale 缩放从预先计算的未被遮挡的天空矢量(固定天窗存在)导出的光源角度
    r.CatmullRomEndParamOffset catmul rom终点的参数偏移量。
    r.CheckSRVTransitions 设置SRV时,渲染目标的测试会正确转换为SRV。
    r.ClearCoatNormal 0禁用透明涂层正常。
    0:关
    1:开
    r.ClearSceneMethod 选择在游戏模式下清除g缓冲区的方式(仅影响延迟着色)。
    0:无清除
    1:RHIClear(默认值)
    2:四倍于最大z
    r.ClearWithExcludeRects 使用RHIClear时控制排除rects的使用
    0:强制关闭(在快速清除的硬件上可以更快)
    1:使用exclude rect(如果提供)
    2:Auto(默认为2,选择此硬件上最佳选择)
    r.Color.Max 允许定义颜色分级后颜色通道中的值1.0映射到的位置。
    值应该在1左右,较小的值会使高光变暗,较大的值会将更多的颜色变为白色,默认值:1
    r.Color.Mid 允许在颜色分级后定义颜色通道中的值0.5映射到的位置(这类似于伽马校正)。
    值应该在0.5左右,较小的值会使中间色调变暗,较大的值会使中间色调变亮,默认值:0.5
    r.Color.Min 允许定义颜色分级后颜色通道中的值0映射到的位置。
    该值应为0左右,正值:灰度加到暗处,负数:更暗的值变为黑色,默认值:0
    r.CompileMaterialsForShaderFormat 启用后,除了运行平台的材质外,还要编译此着色器格式的材质。
    请注意,这些着色器已编译并立即被抛出。这仅在通过r.DebugDumpShaderInfo直接检查输出时有用。
    r.CompileShadersForDevelopment 将此值设置为0可以使用更优化的着色器发布游戏,因为某些
    编辑器和开发功能不再编译到着色器中。
    注意:这应该在发货时完成,但它还没有自动完成(功能需要成熟
    ,着色器编译速度较慢,因为不共享开发中的着色器缓存)。
    无法在运行时更改 - 可以放入BaseEngine.ini 
    0:关闭,着色器可以运行得更快
    1:开(默认)
    r.CompositionGraphDebug 执行此命令以获取一帧的合成图的单帧转储(后期处理和照明)。
    r.CompositionGraphOrder 定义CompositionGraph中的节点执行的顺序(影响后处理和某些照明)。
    选项1提供了更多控制,这对于保留ESRAM,避免GPU同步,集群计算着色器以提高性能和控制AsyncCompute非常有用。
    0:从root开始的树顺序,首先是所有输入然后是依赖项(经典UE4,未连接的节点没有被执行)
    1:RegisterPass()调用顺序,除非依赖项(输入和附加)需要不同的顺序(可能成为新的默认值)因为它提供更多控制,执行所有已注册的节点)
    r.ContactShadows 0:禁用。
    1:启用。
    r.CopyLockedViews 将所有锁定的视图复制到r.LockView将接受的字符串中以重新加载它们。
    r.CreateShadersOnLoad 是否在加载时创建着色器,这可以减少挂接,但使用更多内存。否则,将根据需要创建它们。
    r.CustomDepth 0:功能被禁用
    1:功能已启用,纹理按需创建
    2:功能已启用,纹理未在需要时释放(如果功能不应停止,则应为项目设置)
    3:功能已启用,模板写入为启用后,纹理不会在需要时释放(如果功能不应停止,则应为项目设置)
    r.CustomDepth.Order 当CustomDepth(和CustomStencil)被渲染
    0时:在GBuffer之前(使用AsyncCompute可以更高效,允许在DBuffer传递中使用它,没有GBuffer混合贴花允许GBuffer压缩)
    1:Base Pass后(默认)
    r.CustomDepthTemporalAAJitter 如果禁用,引擎将从自定义深度通道中移除TemporalAA抖动。仅在使用TemporalAA时有效。
    r.D3D.RemoveUnusedInterpolators 在编译D3D的管道时,允许删除未使用的插补器模式。
    -1:不要实际删除,但让应用程序认为它(用于调试)
    0:禁用(默认)
    1:启用删除未使用的
    r.D3DCheckShadersForDouble 允许检查D3D微码以使用double。所有D3D11卡都不允许这样做。
    0:不检查更快的编译
    1:如果找到则启用检查和错误(默认)
    r.D3DDumpAMDCodeXLFile 启用r.DumpShaderDebugInfo时,将生成用于运行CodeXL的批处理文件。
    0:不生成额外的批处理文件(默认)
    1:启用生成额外的批处理文件
    r.D3DDumpD3DAsm 启用r.DumpShaderDebugInfo时,将生成带有fxc程序集的文本文件。
    0:不生成额外文件(默认)
    1:启用生成额外的反汇编文件
    r.DBuffer 启用DBuffer贴花材质混合模式。
    DBuffer贴图在基本传递之前渲染,允许它们正确地影响静态光照和天窗。
    启用后,将强制执行完整的预通过,这会增加CPU / GPU成本。在基本过程中将进行几次纹理查找以获取贴花属性,这会添加像素工作。
    0:关
    1:开(默认)
    r.DebugActionZone.ActionRatio FDisplayMetrics :: GetDisplayMetrics将在没有定义安全区域(0..1)的平台上返回的操作区域比率
    默认值:1.0
    r.DebugSafeZone.Mode 安全区域可视化模式(0..2)
    0:禁用(默认)
    1:显示标题安全区域
    2:显示操作安全区域
    r.DebugSafeZone.OverlayAlpha 安全区覆盖的alpha值(0..1)
    默认值:0.2
    r.DebugSafeZone.TitleRatio FDisplayMetrics :: GetDisplayMetrics将在没有定义安全区域(0..1)的平台上返回的安全区域比率
    默认值:1.0
    r.Decal.FadeDurationScale 缩放每个贴花渐变持续时间。较低的值会缩短寿命和淡入淡出持续时间。默认值是1.0f。
    r.Decal.FadeScreenSizeMult 控制每个贴花淡入淡出的屏幕尺寸。与每贴花屏幕尺寸渐变阈值相乘。较小的意思是贴花的侵蚀性较小。
    r.Decal.GenerateRTWriteMaskTexture 为贴花打开或关闭RT写掩码纹理的生成
    r.Decal.StencilSizeThreshold 控制每个贴花模板通道,允许更大的(屏幕空间)贴花。它为每个贴花增加了更多的开销,因此
    <0:优化被禁用
    0:无论贴图是多少(屏幕空间),
    优化都被启用0..1:启用优化,值定义要触发的最小尺寸(屏幕空间)优化(默认0.1)
    r.DefaultFeature.AmbientOcclusion AmbientOcclusion的引擎默认(项目设置)是(后处理音量/摄像机/游戏设置仍然可以覆盖)
    0:关闭,将AmbientOcclusionIntensity设置为0 
    1:开启(默认)
    r.DefaultFeature.AmbientOcclusionStaticFraction AmbientOcclusion的引擎默认(项目设置)是(后处理音量/摄像机/游戏设置仍然可以覆盖)
    0:关闭,将AmbientOcclusionStaticFraction设置为0 
    1:开启(默认情况下,需要额外通过,仅在有一些烘焙照明时才有用)
    r.DefaultFeature.AntiAliasing AntiAliasingMethod的引擎默认(项目设置)是(后处理音量/相机/游戏设置仍然可以覆盖)
    0:关闭(无抗锯齿)
    1:FXAA(比TemporalAA快,但对非静态情况更闪烁)
    2:TemporalAA(默认值)
    3:MSAA(仅限前向着色)
    r.DefaultFeature.AutoExposure AutoExposure的引擎默认(项目设置)是(后处理音量/相机/游戏设置仍然可以覆盖)
    0:关闭,将AutoExposureMinBrightness和AutoExposureMaxBrightness设置为1 
    1:开启(默认)
    r.DefaultFeature.AutoExposure.Method AutoExposure方法的引擎默认(项目设置)(后处理音量/相机/游戏设置仍然可以覆盖)
    0:基于直方图(需要计算着色器,默认)
    1:基本自动曝光
    r.DefaultFeature.Bloom Bloom的引擎默认(项目设置)是(后处理音量/相机/游戏设置仍然可以覆盖)
    0:关闭,将BloomIntensity设置为0 
    1:开启(默认)
    r.DefaultFeature.LensFlare LensFlare的引擎默认(项目设置)是(后处理音量/摄像机/游戏设置仍然可以覆盖)
    0:关闭,将LensFlareIntensity设置为0 
    1:开启(默认)
    r.DefaultFeature.MotionBlur MotionBlur的引擎默认(项目设置)是(后处理音量/摄像机/游戏设置仍然可以覆盖)
    0:关闭,将MotionBlurAmount设置为0 
    1:开启(默认)
    r.DeferSkeletalDynamicDataUpdateUntilGDME 如果> 0,那么骨架网格动态数据更新将推迟到GDME。实验选项。
    r.DeferUniformBufferUpdatesUntilVisible 如果> 0,则不要更新原始统一缓冲区,直到它可见。
    r.DemosaicVposOffset 此偏移量将添加到ES2色调映射着色器中用于去马赛克的光栅化位置。它存在以解决一些具有半像素偏移的Android设备上的驱动程序错误。
    r.DepthOfField.DepthBlur.Amount 此比例乘数仅影响CircleDOF DepthBlur特征(值定义半径达到50%的公里数)。
    x:将现有深度模糊量乘以x 
    -x:用x(以km为单位)覆盖现有深度模糊量
    1:无调整(默认)
    r.DepthOfField.DepthBlur.ResolutionScale 此比例乘数仅影响CircleDOF DepthBlur功能。这是一个暂时的黑客攻击。
    它通过分辨率增加超过1920(宽度)来对DepthBlur进行线性缩放,仅影响大于此的分辨率。
    实际数学:浮点因子=最大值(ViewWidth / 1920 - 1,0); DepthBlurRadius * = 1 + Factor *(CVar - 1)
    1:无调整(默认)
    x:如果分辨率为1920则没有变化,如果大于1920,则将半径缩放x
    r.DepthOfField.DepthBlur.Scale 此比例乘数仅影响CircleDOF DepthBlur功能。这在r.DepthOfField.DepthBlur.ResolutionScale之后应用。
    0:禁用深度模糊
    x:将现有深度模糊半径乘以x 
    -x:用x 
    1 覆盖现有深度模糊半径:无调整(默认)
    r.DepthOfField.FarBlur 临时黑客只影响CircleDOF 
    0:关闭
    1:开启(默认)
    r.DepthOfField.MaxSize 允许钳制高斯景深半径(以获得更好的性能),默认值:100
    r.DepthOfField.NearBlurSizeThreshold 在强制禁用效果之前设置最小近模糊大小。目前仅影响高斯DOF。
    (默认值:0.01)
    r.DepthOfFieldQuality 允许调整景深质量。目前仅完全影响BokehDOF。GaussianDOF为0表示关闭,否则为on。
    0:关闭
    1:低
    2:高质量(默认,自适应,可以慢4倍)
    3:非常高的质量,用于非实时过场动画,仅限CircleDOF(慢)
    4:极高质量,用于非实时过场动画,CircleDOF只(非常慢)
    r.DetailMode 当前细节模式; 确定是否应更新/勾选参与者的组成部分。
    0:低,仅显示DetailMode低或更高的对象
    1:中,使用DetailMode中等或更高
    显示所有对象2:高,显示所有对象(默认)
    r.DFFullResolution 1 =全分辨率距离场阴影,0 =具有双边上采样的半分辨率。
    r.DFShadowScatterTileCulling 是否使用光栅化器将对象散布到切片网格上以进行剔除。
    r.DFShadowWorldTileSize 用于剔除定向灯的瓷砖的世界空间大小。
    r.DFTwoSidedMeshDistanceBias 世界空间量用于扩展双面网格的距离场表示。这对于使树阴影与标准阴影贴图匹配很有用。
    r.DiffuseColor.Max 通过将漫反射颜色从1重新映射到新值(0..1),允许快速进行材质测试,仅适用于非运输内置!
    1 :(默认)
    r.DiffuseColor.Min 通过将漫反射颜色从1重新映射到新值(0..1),允许快速进行材质测试,仅适用于非运输内置!
    1 :(默认)
    r.DisableDistortion 防止渲染失真效果。保存全屏帧缓冲的内存。
    r.DisableLODFade 禁用褪色以进行距离剔除
    r.DiscardUnusedQuality 更好地保留或丢弃内存中未使用的质量级别着色器映射。
    0:保持内存中的所有质量等级。(默认值)
    1:在加载时丢弃未使用的质量级别。
    r.DisplayInternals 允许启用显示引擎/渲染器内部的屏幕打印输出
    这对于能够解释屏幕截图看起来不同的原因非常有用。
    0:关闭(默认)
    1:启用
    r.DistanceFadeMaxTravel 在淡入淡出时间内玩家可以行进的最大距离。
    r.DistanceFieldAO 是否允许距离场AO特征,用于实现静态网格物体中可移动天空灯光的阴影。
    r.DistanceFieldGI  
    r.DistanceFields.AtlasSizeXY X和Y中全局网格距离字段图集体积纹理的大小。
    r.DistanceFields.AtlasSizeZ Z中全局网格距离字段图集体积纹理的大小。
    r.DistanceFields.DefaultVoxelDensity 确定网格的默认比例如何转换为距离场体素尺寸。
    更改此选项将导致重建所有距离字段。大值可以非常快地消耗内存!
    r.DistanceFields.MaxPerMeshResolution 允许单个静态网格物体资源的最高分辨率(在一个维度上),用于限制具有大规模的网格的内存使用。
    更改此选项将导致重建所有距离字段。像512这样的大值可以非常快地消耗内存!(512个一个资产128Mb)
    r.DistanceFieldShadowing 是否允许距离场阴影特征。
    r.DoInitViewsLightingAfterPrepass 延迟InitViews的照明部分,直到预通过之后。这提高了线程吞吐量并尽快获得GPU的预通过。实验选择; 有一个未知的种族。
    r.DontLimitOnBattery 0:限制带电池的设备的性能。(默认)
    1:不要因设备有电池而限制性能。
    r.DoTiledReflections 使用平铺计算着色器计算反射环境.. 
    0:关闭
    1:开启(默认)
    r.Downsample.Quality 定义Downsample通过的质量。我们可能会在以后添加更多质量水平 
    0:低质量
    > 0:高质量(默认值:3)
    r.DownsampledOcclusionQueries 是否向下采样深度缓冲区发出遮挡查询
    r.DrawRectangleOptimization 控制DrawRectangle()的优化。启用后,可以使用三角形在某些情况下绘制四边形(视口大小为四边形)。
    使用三角形可以在较低分辨率下稍微加快后处理,但不能始终使用。
    0:禁用优化,DrawDenormalizedQuad始终使用quad 
    1 渲染:启用优化,可以在指定的位置渲染三角形(默认)
    r.DriverDetectionMethod 定义了哪个实现用于检测GPU驱动程序(检查旧驱动程序以及日志和统计信息)
    0:在注册表中迭代可用的驱动程序并选择具有相同名称的驱动程序,如果有问题请使用下一个方法(发生)
    1:获取主要adpater的驱动程序(在处理多个适配器时可能不正确)
    2:使用DirectX LUID(将是最好的,尚未实现)
    3:使用Windows功能,使用主设备(API使用时可能出错)另一个适配器)
    4:使用Windows功能,使用像DirectX设备这样的名称(最新,最有希望)
    r.DumpDrawListStats 转储与世界对象关联的所有场景的静态网格物体绘制列表统计信息。
    r.DumpingMovie 允许将每个渲染帧转储到磁盘(慢速fps,命名MovieFrame ..)。
    <= 0:关闭(默认),<0:保持打开,> 0:n帧保持打开(n是指定的数字)
    r.DumpRenderTargetPoolMemory 转储渲染目标池的转储分配信息。
    r.DumpSCWQueuedJobs 设置为1时,它将转储作业列表以帮助跟踪ShaderCompileWorker上发生的崩溃。
    r.DumpShaderDebugInfo 设置为1时,将导致任何随后编译的着色器将调试信息转储到GameName / Saved / ShaderDebugInfo 
    调试信息取决于平台,但通常包括着色器源的预处理版本。
    在iOS上,如果将PowerVR图形SDK安装到默认路径,则将调用PowerVR着色器编译器并在烹饪期间报告错误。
    r.DumpShaderDebugShortNames 仅在r.DumpShaderDebugInfo = 1时有效。
    设置为1时,将缩短名称工厂和着色器类型文件夹名称,以避免长路径问题。
    r.DumpShaderDebugWorkerCommandLine 仅在r.DumpShaderDebugInfo = 1时有效。
    设置为1时,它将生成一个可与ShaderCompileWorker的-directcompile一起使用的文件。
    r.DumpShadows 转储影子设置(仅适用于开发人员,仅适用于非运输版本)
    r.DumpTransitionsForResource 在转换给定资源时打印callstack。目前仅针对DX11实现。要转储的资源的名称
    r.DX11NumForcedGPUs Num强制GPU。
    r.EarlyZPass 是否使用仅深度传递来初始化基础传递的Z剔除。无法在运行时更改。
    注意:还要看一下r.EarlyZPassMovable 
    0:关闭
    1:只有好的遮挡物:没有遮挡,大屏幕
    2:所有不透明(包括蒙面)
    x:使用内置启发式(默认为3)
    r.EarlyZPassMovable 是否将可移动对象渲染到深度中仅通过。默认为开。
    注意:还要看看r.EarlyZPass
    r.EarlyZPassOnlyMaterialMasking 是否仅在早期Z通道中计算材料的掩模不透明度。更改此设置需要重新启动编辑器。
    注意:需要r.EarlyZPass == 2 && r.EarlyZPassMovable == 1
    r.Editor.2DGridFade 调整以在2D视口中定义网格渲染。
    r.Editor.2DSnapFade 调整以在2D视口中定义网格渲染。
    r.Editor.2DSnapMin 调整以在2D视口中定义网格渲染。
    r.Editor.2DSnapScale 调整以在2D视口中定义网格渲染。
    r.Editor.3DGridFade 调整以在3D视口中定义网格渲染。
    r.Editor.3DSnapFade 调整以在3D视口中定义网格渲染。
    r.Editor.AlignedOrthoZoom 仅影响编辑器正交视口。
    0:每个正交视口放大由视口宽度
    1 定义:所有正交视口缩放彼此锁定,以允许轴线彼此对齐。
    r.Editor.MovingPattern 0:动画随时间推移关闭(默认为1)
    r.Editor.NewLevelGrid 更好地显示新的编辑器级别网格
    0:关闭
    1:分析抗锯齿
    2:基于纹理(默认)
    r.Editor.OpaqueGizmo 0..1 
    0:遮挡Gizmo部分透明(默认),1:Gizmo从不遮挡
    r.EmitMeshDrawEvents 围绕每个绘图策略绘制调用发出GPU事件。/ n有用于查看每个绘制调用的统计信息,但是它会极大地扭曲每个绘制调用的总时间和时间。
    r.EmitterSpawnRateScale 全球范围内的排放者产生率。发射器可以选择通过其bApplyGlobalSpawnRateScale属性应用或忽略它。
    r.EnableAsyncComputeTranslucencyLightingVolumeClear 是否使用异步计算清除半透明照明量。
    r.EnableDebugSpam_GetObjectPositionAndScale 为FParticleSystemSceneProxy :: GetObjectPositionAndScale()中的错误启用或禁用调试日志垃圾邮件
    r.EnableMorphTargets 启用变形目标
    r.EnableStereoEmulation 模拟立体渲染
    r.ExposureOffset 用于在后期处理设置和眼睛适应之上调整曝光。仅限开发人员。0:默认
    r.EyeAdaptation.Focus 仅适用于基本适应模式
    0:均匀加权
    > 0:中心焦点,1是一个好数字(默认)
    r.EyeAdaptation.MethodOveride
    覆盖后处理体积-2中设置的眼睛适应方法:使用自定义设置覆盖(用于测试基本模式)
    -1:无覆盖
    1:基于直方图
    2:基本
    r.EyeAdaptationQuality 定义眼睛适应质量,允许调整质量或性能。
    <= 0:关闭(最快)
    1:低质量(例如,基于非直方图,尚未实现)
    2:正常质量(默认)
    3:高质量(例如,屏幕位置已本地化,尚未实施)
    r.FastBlurThreshold 定义高斯模糊优化开始的半径(估计快25% - 40%)。
    优化使用的内存略少,并且在小半径上具有质量损失。
    0:始终使用优化(最快,最低质量)
    3:使用从3像素半径开始的优化(非常快)
    7:使用从7像素半径开始的优化(默认)
    > 15:几乎不使用优化(高质量)
    r.FeatureLevelPreview 如果为1,则快速设置菜单将包含启用功能级别预览模式的选项
    r.Filter.LoopMode 控制何时使用动态或展开循环来迭代高斯过滤。
    此过程用于高斯模糊,绽放和景深。
    与32个展开的循环样本相比,动态循环允许多达128个样本,但
    在每次迭代时为循环停止测试增加了额外的成本。
    0:仅展开循环(默认值;限制为32个样本)。
    1:如果需要超过32个样本,则回退到动态循环。
    2:仅动态循环。
    r.Filter.NewMethod 影响绽放和高斯景深。
    0:旧方法(不随尺寸线性缩放)
    1:新方法,可能需要资产调整(默认)
    r.Filter.SizeScale 允许缩小或增大用于布隆和高斯景深的样本计数(缩放比例以得到合理的结果)。
    低至0.6的值很难注意到
    1全质量(默认)
    > 1个样本(慢)
    <1个样本(更快,具有HDR内容的伪像或带有GaussianDOF的四四方位结果)
    r.FinishCurrentFrame 如果选中,则强制当前帧完成并渲染到屏幕而不是缓冲。这将改善延迟,但会降低整体性能。
    r.FlushRHIThreadOnSTreamingTextureLocks 如果设置为0,我们将不会对流纹理进行任何刷新。这是安全的,因为纹理拖缆明确地处理这些危险。
    r.Fog 0:禁用
    1:启用(默认)
    r.FogDensity 允许覆盖FogDensity设置(需要级别中的ExponentialFog)。
    使用强值可以快速查看哪些像素受雾影响。
    使用起始距离允许剔除像素可以加快渲染速度。
    <0:使用默认设置(默认值:-1)
    > = 0:按给定值覆盖设置(0:关闭,1 =非常浓雾)
    r.FogStartDistance 允许覆盖FogStartDistance设置(需要级别中的ExponentialFog)。
    <0:使用默认设置(默认值:-1)
    > = 0:按给定值覆盖设置(以世界单位表示)
    r.ForceAMDToSM4 强制AMD设备使用SM4.0 / D3D10.0功能级别。
    r.ForceDebugViewModes 0:设置无效。
    1:强制调试视图模式可用,即使在熟化版本上也是如此.2:强制调试视图模式不可用,即使在编辑器版本中也是如此。删除许多着色器排列以更快地进行着色器迭代。
    r.ForceHighestMipOnUITextures 如果设置为1,则UI组中的texutres将强制使用其最高mip级别。
    r.ForceIntelToSM4 强制Intel设备使用SM4.0 / D3D10.0功能级别。
    r.ForceLOD LOD级别强制,-1关闭。
    r.ForceNvidiaToSM4 强制Nvidia设备使用SM4.0 / D3D10.0功能级别。
    r.Forward.LightGridPixelSize 光栅中单元格的大小,以像素为单位。
    r.Forward.LightGridSizeZ 光栅中的Z切片数。
    r.Forward.LightLinkedListCulling 使用反向链接列表存储剔除的灯光,删除有多少灯光可以影响单元格的固定限制 - 它变为全局限制。
    r.Forward.MaxCulledLightsPerCell Controls how much memory is allocated for each cell for light culling. When r.Forward.LightLinkedListCulling is enabled, this is used to compute a global max instead of a per-cell limit on culled lights.
    r.ForwardBasePassSort How to sort the mobile base pass:
    0: Decide automatically based on the hardware.
    1: No sorting.
    2: Sort drawing policies.
    3: Sort drawing policies and the meshes within them.
    r.ForwardShading Whether to use forward shading on desktop platforms - requires Shader Model 5 hardware.
    Forward shading has lower constant cost, but fewer features supported. 0:off, 1:on
    This rendering path is a work in progress with many unimplemented features, notably only a single reflection capture is applied per object and no translucency dynamic shadow receiving.
    r.FreeSkeletalMeshBuffers Controls whether skeletal mesh buffers are kept in CPU memory to support merging of skeletal meshes.
    0: Keep buffers(default)
    1: Free buffers
    r.FrustumCullNumWordsPerTask Performance tweak. Controls the granularity for the ParallelFor for frustum culling.
    r.FullScreenMode Defines how we do full screen when requested (e.g. command line option -fullscreen or in ini [SystemSettings] fullscreen=true)
    0: normal full screen (renders faster, more control over vsync, less GPU memory, 10bit color if possible)
    1: windowed full screen (quick switch between applications and window mode, slight performance loss)
    any other number behaves like 0
    r.FXSystemPreRenderAfterPrepass If > 0, then do the FX prerender after the prepass. This improves pipelining for greater performance. Experiemental option.
    r.Gamma Gamma on output
    r.GBufferFormat Defines the memory layout used for the GBuffer.
    (affects performance, mostly through bandwidth, quality of normals and material attributes).
    0: lower precision (8bit per component, for profiling)
    1: low precision (default)
    3: high precision normals encoding
    5: high precision
    r.GeneralPurposeTweak Useful for low level shader development to get quick iteration time without having to change any c++ code.
    Value maps to Frame.GeneralPurposeTweak inside the shaders.
    Example usage: Multiplier on some value to tweak, toggle to switch between different algorithms (Default: 1.0)
    DON'T USE THIS FOR ANYTHING THAT IS CHECKED IN. Compiled out in SHIPPING to make cheating a bit harder.
    r.GenerateLandscapeGIData Whether to generate a low-resolution base color texture for landscapes for rendering real-time global illumination.
    This feature requires GenerateMeshDistanceFields is also enabled, and will increase mesh build times and memory usage.
    r.GenerateMeshDistanceFields Whether to build distance fields of static meshes, needed for distance field AO, which is used to implement Movable SkyLight shadows.
    Enabling will increase mesh build times and memory usage. Changing this value will cause a rebuild of all static meshes.
    r.GPUBusyWait <=0:off, >0: keep the GPU busy with n units of some fixed amount of work, independent on the resolution
    This can be useful to make GPU timing experiments. The value should roughly represent milliseconds.
    Clamped at 500.
    r.GPUDefrag.AllowOverlappedMoves Allows defrag relocations that partially overlap themselves.
    r.GPUDefrag.EnableTimeLimits Limits CPU time spent doing GPU defragmentation.
    r.GPUDefrag.MaxRelocations Limits the number of total relocations in a frame regardless of number of bytes moved..
    r.GPUParticle.AFRReinject Toggle optimization when running in AFR to re-inject particle injections on the next GPU rather than doing a slow GPU->GPU transfer of the texture data
    0: Reinjection off
    1: Reinjection on
    r.GPUParticle.FixDeltaSeconds GPU particle fix delta seconds.
    r.GPUParticle.FixTolerance Delta second tolerance before switching to a fix delta seconds.
    r.GPUParticle.MaxNumIterations Max number of iteration when using a fix delta seconds.
    r.GPUParticle.Simulate Enable or disable GPU particle simulation
    r.GPUStatsEnabled Enables or disables GPU stat recording
    r.GPUStatsMaxQueriesPerFrame Limits the number of timestamps allocated per frame. -1 = no limit
    r.GraphicsAdapter User request to pick a specific graphics adapter (e.g. when using a integrated graphics card with a discrete one)
    At the moment this only works on Direct3D 11. Unless a specific adapter is chosen we reject Microsoft adapters because we don't want the software emulation.
    -2: Take the first one that fulfills the criteria
    -1: Favour non integrated because there are usually faster (default)
    0: Adapter #0
    1: Adapter #1, ...
    r.HDR.Display.ColorGamut Color gamut of the output display:
    0: Rec709 / sRGB, D65 (default)
    1: DCI-P3, D65
    2: Rec2020 / BT2020, D65
    3: ACES, D60
    4: ACEScg, D60
    r.HDR.Display.OutputDevice Device format of the output display:
    0: sRGB (LDR)
    1: Rec709 (LDR)
    2: Explicit gamma mapping (LDR)
    3: ACES 1000 nit ST-2084 (Dolby PQ) (HDR)
    4: ACES 2000 nit ST-2084 (Dolby PQ) (HDR)
    5: ACES 1000 nit ScRGB (HDR)
    6: ACES 2000 nit ScRGB (HDR)
    r.HDR.EnableHDROutput Creates an HDR compatible swap-chain and enables HDR display output.0: Disabled (default)
    1: Enable hardware-specific implementation
    r.HDR.UI.CompositeMode Mode used when compositing the UI layer:
    0: Standard compositing
    1: Shader pass to improve HDR blending
    r.HDR.UI.Level Luminance level for UI elements when compositing into HDR framebuffer (default: 1.0).
    r.HeightfieldGlobalIllumination  
    r.HeightfieldInnerBounceDistance  
    r.HeightfieldOuterBounceDistanceScale  
    r.HeightfieldTargetUnitsPerTexel  
    r.HighQualityLightMaps If set to 1, allow high quality lightmaps which don't bake in direct lighting of stationary lights
    r.HighResScreenshotDelay When high-res screenshots are requested there is a small delay to allow temporal effects to converge.
    Default: 4. Using a value below the default will disable TemporalAA for improved image quality.
    r.HLOD Single argument: 0 or 1 to Disable/Enable HLOD System
    Multiple arguments: force X where X is the HLOD level that should be forced into view
    r.HLOD.DistanceScale Scale factor for the distance used in computing discrete HLOD for transition for static meshes. (defaults to 1)
    (higher values make HLODs transition farther away, e.g., 2 is twice the distance)
    r.HLOD.ListUnbuilt Lists all unbuilt HLOD actors in the world
    r.HLOD.MaximumLevel How far down the LOD hierarchy to allow showing (can be used to limit quality loss and streaming texture memory usage on high scalability settings)
    -1: No maximum level (default)
    0: Prevent ever showing a HLOD cluster instead of individual meshes
    1: Allow only the first level of HLOD clusters to be shown
    2+: Allow up to the Nth level of HLOD clusters to be shown
    r.HZBOcclusion Defines which occlusion system is used.
    0: Hardware occlusion queries
    1: Use HZB occlusion system (default, less GPU and CPU cost, more conservative results) 2: Force HZB occlusion system (overrides rendering platform preferences)
    r.IndirectLightingCache Whether to use the indirect lighting cache on dynamic objects. 0 is off, 1 is on (default)
    r.InitialShaderLoadTime Time to spend loading the shader cache synchronously on startup before falling back to asynchronous precompilation/predraw. Defaults to -1 which will perform all work synchronously.
    r.InvalidateCachedShaders Invalidate shader cache by making a unique change to ShaderVersion.usf which is included in common.usf.To initiate actual the recompile of all shaders use "recompileshaders changed" or press "Ctrl Shift .".
    The ShaderVersion.usf file should be automatically checked out but it needs to be checked in to have effect on other machines.
    r.KeepOverrideVertexColorsOnCPU Keeps a CPU copy of override vertex colors. May be required for some blueprints / object spawning.
    r.KeepPreCulledIndicesThreshold  
    r.LandscapeLODBias LOD bias for landscape/terrain meshes.
    r.LensFlareQuality 0: off but best for performance
    1: low quality with good performance
    2: good quality (default)
    3: very good quality but bad performance
    r.LightFunctionQuality Defines the light function quality which allows to adjust for quality or performance.
    <=0: off (fastest)
    1: low quality (e.g. half res with blurring, not yet implemented)
    2: normal quality (default)
    3: high quality (e.g. super-sampled or colored, not yet implemented)
    r.LightPropagationVolume Project setting of the work in progress feature LightPropgationVolume. Cannot be changed at runtime.
    0: off (default)
    1: on
    r.LightShaftBlurPasses Number of light shaft blur passes.
    r.LightShaftDownSampleFactor Downsample factor for light shafts. range: 1..8
    r.LightShaftFirstPassDistance 在第一个径向模糊通道上到光线的距离的分数。
    r.LightShaftNumSamples 每个光轴径向模糊通过的样本数。还会影响每次通过时模糊距离的增加速度。
    r.LightShaftQuality 定义光轴质量(移动和非移动)。
    0:关
    1:开(默认)
    r.LightShaftRenderToSeparateTranslucency 如果启用,光轴将渲染到单独的半透明缓冲区。
    这确保在光轴之前应用具有BL_BeforeTranslucnecy的后处理材料
    r.LimitRenderingFeatures 允许快速缩小渲染功能以提高渲染性能。
    这只是在游戏中更改多个显示标志和控制台变量的快速方法。
    禁用更多功能,数字越高
    <= 0:关闭,订单在代码中定义(当我们确定订单时可以在此处记录)
    r.ListSceneColorMaterials 列出从场景颜色中读取的所有材料。
    r.LODFadeTime LOD褪色需要多长时间(以秒为单位)。
    r.LPV.DiffuseIntensity LPV漫反射的乘数。
    r.LPV.EmissiveMultiplier 发射强度乘数
    r.LPV.Intensity LPV强度的乘数。1.0是默认值。
    r.LPV.Mixing 反射环境与间接着色(Ambient + LPV)混合。
    0关闭,1打开(默认)
    r.LPV.NumAOPropagationSteps LPV AO传播步数
    0:噪声(适合调试)
    1:正常(默认)
    2:模糊
    r.LPV.NumPropagationSteps LPV传播步骤的数量
    r.LPV.RSMResolution 反射阴影贴图分辨率(用于LPV) - 较高的值会导致较少的混叠伪像,但会降低性能
    r.LPV.SpecularIntensity LPV镜面反射的乘数。
    r.LUT.Size 胶片LUT的大小
    r.MaterialEditor.UseDevShaders 切换材质编辑器是否使用包含编辑器产生的额外开销的着色器。如果在运行时更改,则必须重新打开材质编辑器。
    r.MaterialQualityLevel 0对应于低质量材料,如材料中的质量开关所定义,1对应于高,2对应于介质。
    r.MaxAnisotropy MaxAnisotropy应该在1到16之间。较高的值意味着使用各向异性过滤时更好的纹理质量,但代价是性能。默认值为4。
    r.MaxCSMRadiusToAllowPerObjectShadows 只有CSM半径小于此值的静止光源才会为动态对象创建每个对象的阴影。
    r.MaxForwardBasePassDraws 在指定的次数后停止渲染静态移动基础传递。用于查看优化时网格渲染的顺序。
    r.MaxQualityMode 如果设置为1,则无论性能影响如何,都将某些系统设置覆盖到最高质量
    r.MeshParticle.MinDetailModeForMotionBlur 设置网格粒子发出运动模糊之前的最小细节模式(Low = 0,Med = 1,High = 2,Max = 3)。设置为-1可完全禁用网格粒子运动模糊。默认为-1。
    r.MeshReductionModule 要选择的网格缩小模块的名称。如果为空,则选择任何存在的。
    r.MinScreenRadiusForCSMDepth 低于该阈值的网格将从CSM深度通过中剔除。
    r.MinScreenRadiusForDepthPrepass 低于该阈值的网格将从深度剔除仅通过。
    r.MinScreenRadiusForLights 低于该阈值的灯将被剔除。
    r.MinYResolutionFor3DView 定义我们想要在3D视图中支持的最小Y分辨率
    r.MinYResolutionForUI 定义我们想要在UI中支持的最小Y分辨率(默认值为720)
    r.MipMapLODBias 为所有2D纹理应用额外的mip贴图偏差,范围为-15.0到15.0
    r.Mobile.AllowDistanceFieldShadows 0:不生成着色器排列以从静止定向光渲染距离场阴影。
    1:生成着色器排列以从静止的方向光渲染距离场阴影。(默认)
    r.Mobile.AllowMovableDirectionalLights 0:不生成着色器排列以渲染可移动的方向灯。
    1:生成着色器排列以渲染可移动的方向灯。(默认)
    r.Mobile.AlwaysResolveDepth 0:只有在使用贴花或调制阴影时,才会在不透明通过后解析深度缓冲区。(默认值)
    1:深度缓冲区始终在不透明传递后解析。
    r.Mobile.DisableVertexFog 设置为1可禁用所有移动着色器中的顶点雾化。
    r.Mobile.EnableStaticAndCSMShadowReceivers 0: Primitives can receive only static shadowing from stationary lights.
    1: Primitives can receive both CSM and static shadowing from stationary lights. (default)
    r.Mobile.ForceDepthResolve 0: Depth buffer is resolved by switching out render targets. (Default)
    1: Depth buffer is resolved by switching out render targets and drawing with the depth texture.
    r.Mobile.Shadow.CSMShaderCulling  
    r.Mobile.Shadow.CSMShaderCullingCombineCasters  
    r.Mobile.Shadow.CSMShaderCullingDebugGfx  
    r.Mobile.Shadow.CSMShaderCullingDisableCasterTest  
    r.Mobile.Shadow.CSMShaderCullingTestBox  
    r.MobileContentScaleFactor Content scale multiplier (equates to iOS's contentScaleFactor to support Retina displays
    r.MobileDynamicPointLightsUseStaticBranch 0: Generate unique forward rendering base pass shaders for 0, 1, ... N mobile dynamic point lights. (faster but generates many more shaders)
    1: Use a shared shader with static branching for rendering 1 or more dynamic point lights (slightly slower but reduces shaders generated, recommended for most games).
    r.MobileHDR 0: Mobile renders in LDR gamma space. (suggested for unlit games targeting low-end phones)
    1: Mobile renders in HDR linear space. (default)
    r.MobileHDR32bppMode 0: If 32bpp is required mobile HDR will use best suited 32 bpp mode. (default)1: Force Mobile 32bpp HDR to use mosaic encoding.
    2: Force Mobile 32bpp HDR to use RGBA encoding mode.
    r.MobileMSAA Use MSAA instead of Temporal AA on mobile:
    1: Use Temporal AA (MSAA disabled)
    2: Use 2x MSAA (Temporal AA disabled)
    4: Use 4x MSAA (Temporal AA disabled)
    8: Use 8x MSAA (Temporal AA disabled)
    r.MobileNumDynamicPointLights The number of dynamic point lights to support on mobile devices. Setting this to 0 for games which do not require dynamic point lights will reduce the number of shaders generated.
    r.MobileReduceLoadedMips Reduce loaded texture mipmaps for nonstreaming mobile platforms.
    r.MorphTarget.Mode Use GPU for computing morph targets.
    0: Use original CPU method (loop per morph then by vertex) (default)
    1: Enable GPU method
    r.MotionBlur.Amount Allows to override the postprocess setting (scale of motion blur)
    -1: override (default)
    r.MotionBlur.Max Allows to override the postprocess setting (max length of motion blur, in percent of the screen width)
    -1: override (default)
    r.MotionBlur.Scale Allows to scale the postprocess intensity/amount setting in the postprocess.
    1: don't do any scaling (default)
    r.MotionBlur2ndScale  
    r.MotionBlurDebug Defines if we log debugging output for motion blur rendering.
    0: off (default)
    1: on
    r.MotionBlurFiltering Useful developer variable
    0: off (default, expected by the shader for better quality)
    1: on
    r.MotionBlurQuality Defines the motion blur method which allows to adjust for quality or performance.
    0:off, 1:low, 2:medium, 3:high (default), 4: very high
    r.MotionBlurScatter Forces scatter based max velocity method (slower).
    r.MotionBlurSeparable Adds a second motion blur pass that smooths noise for a higher quality blur.
    r.MotionBlurSoftEdgeSize Defines how wide the object motion blur is blurred (percent of screen width) to allow soft edge motion blur.
    This scales linearly with the size (up to a maximum of 32 samples, 2.5 is about 18 samples) and with screen resolution
    Smaller values are better for performance and provide more accurate motion vectors but the blurring outside the object is reduced.
    If needed this can be exposed like the other motionblur settings.
    0:off (not free and does never completely disable), >0, 1.0 (default)
    r.MSAA.CompositingSampleCount Affects the render quality of the editor 3d objects.
    1: no MSAA, lowest quality
    2: 2x MSAA, medium quality (medium GPU memory consumption)
    4: 4x MSAA, high quality (high GPU memory consumption)
    8: 8x MSAA, very high quality (insane GPU memory consumption)
    r.MSAACount Number of MSAA samples to use with the forward renderer. Only used when MSAA is enabled in the rendering project settings.
    1: Use Temporal AA (MSAA disabled)
    2: Use 2x MSAA (Temporal AA disabled)
    4: Use 4x MSAA (Temporal AA disabled)
    r.MultithreadedLightmapEncode Lightmap encoding after rebuild lightmaps is done multithreaded.
    r.MultithreadedShadowmapEncode Shadowmap encoding after rebuild lightmaps is done multithreaded.
    r.NormalCurvatureToRoughnessBias Biases the roughness resulting from screen space normal changes for materials with NormalCurvatureToRoughness enabled. Valid range [-1, 1]
    r.NormalCurvatureToRoughnessExponent Exponent on the roughness resulting from screen space normal changes for materials with NormalCurvatureToRoughness enabled.
    r.NormalCurvatureToRoughnessScale Scales the roughness resulting from screen space normal changes for materials with NormalCurvatureToRoughness enabled. Valid range [0, 2]
    r.NormalMapsForStaticLighting Whether to allow any static lighting to use normal maps for lighting computations.
    r.NumBufferedOcclusionQueries Number of frames to buffer occlusion queries (including the current renderthread frame).
    More frames reduces the chance of stalling the CPU waiting for results, but increases out of date query artifacts.
    r.NVIDIATimestampWorkaround 如果为true,我们在pre-maxwell硬件上禁用时间戳(驱动程序错误的解决方法)
    r.OcclusionCullParallelPrimFetch 启用并行遮挡剔除原始提取。
    r.OcclusionQueryLocation 控制何时呈现遮挡查询。在基础通道之前渲染可能会导致更糟糕的遮挡(因为并非所有遮挡物通常都会在早期通道中渲染)。但是,它可能会减少CPU在某些平台上等待查询结果停顿并提高整体性能。在BasePass.1之后:在EarlyZPass之后,但在BasePass之前。
    r.OneFrameThreadLag 是否允许渲染线程滞后于游戏线程的一帧(0:禁用,否则启用)
    r.OpenGL.AddExtensions 要添加到驱动程序报告的扩展字符串的逗号分隔的OpenGL扩展列表
    r.OpenGL.StripExtensions 用于从驱动程序报告的扩展字符串中剥离的逗号分隔OpenGL扩展的列表
    r.Paper2D.DrawTwoSided 将精灵画成两面。
    r.ParallelBasePass 切换并行基本传递渲染。必须启用并行渲染才能生效。
    r.ParallelInitViews 切换并行初始化视图。0 =关闭; 1 =开
    r.ParallelPrePass 切换并行zprepass渲染。必须启用并行渲染才能生效。
    r.ParallelShadows 切换平行阴影渲染。必须启用并行渲染才能生效。
    r.ParallelShadowsNonWholeScene 为非整个场景阴影切换平行阴影渲染。必须启用r.ParallelShadows才能生效。
    r.ParallelTranslucency 切换平行半透明渲染。必须启用并行渲染才能生效。
    r.ParallelVelocity 切换平行速度渲染。必须启用并行渲染才能生效。
    r.ParticleLightQuality 0:没有灯。1:只有简单的灯光。2:简单+ HQ灯
    r.ParticleLODBias 粒子系统的LOD偏差。开发功能,默认为0
    r.Photography.Allow 如果为1,则允许用户冻结场景并可能使用漫游相机
    拍摄屏幕截图。动态设置为允许或禁止每级,
    每过场动画等摄影(默认值:1)
    r.Photography.AutoPause 如果为1,摄影系统将尝试确保在摄影模式下水平暂停。设置为0以从PlayerCameraManager蓝图回调手动管理暂停和取消暂停。注意:无论AutoPause值如何,都将调用Blueprint回调。(默认值:自动暂停(1)
    r.Photography.AutoPostprocess 如果为1,摄影系统将尝试在摄影会话/拍摄期间自动禁用HUD,字幕和一些标准后处理效果,这些效果已知会产生较差的摄影效果。设置为0以从PlayerCameraManager蓝图回调中手动管理所有后处理调整。注意:无论AutoPostprocess值如何,都将调用蓝图回调。(默认值:自动禁用(1)
    r.Photography.Available (只读)如果为1,则用户可以使用摄影系统。
    否则,无法使用正常运行的后端。
    r.Photography.EnableMultipart 如果为1,则允许摄影系统拍摄需要在以后拼接在一起的拼贴中渲染的高分辨率照片。(默认值:1)
    r.Photography.PersistEffects 如果为1,则在摄影会话结束后,允许在摄影模式中启用的自定义后处理效果在游戏中持续存在。在下一次拍摄会话开始之前,可能不会应用对此值的更改。(默认值:禁用(0)
    r.Photography.SettleFrames 在拍照前让渲染“定居”的帧数。有助于使时间AA /平滑效果良好; 如果不使用任何时间效果,可以降低以便更快地捕获。(默认值:10)
    r.Photography.TranslationSpeed 用于移动漫游摄影相机的正常速度(以每秒虚幻单位计)。(默认值:100.0)
    r.PostProcessAAQuality Defines the postprocess anti aliasing method which allows to adjust for quality or performance.
    0:off, 1:very low (faster FXAA), 2:low (FXAA), 3:medium (faster TemporalAA), 4:high (default TemporalAA), 5:very high, 6:max
    r.PostProcessingColorFormat Defines the memory layout (RGBA) used for most of the post processing chain buffers.
    0: Default
    1: Force PF_A32B32G32R32F 128Bit (unreasonable but good for testing)
    r.PrecomputedVisibilityWarning If set to 1, a warning will be displayed when rendering a scene from a view point without precomputed visibility.
    r.PreCullIndexBuffers Runs a slow operation to remove any static mesh triangles that are invisible or inside a precull volume.
    r.PreCullMaxDistance  
    r.PredrawBatchTime 每帧花费预绘制着色器的时间(以毫秒为单位),或者为-1以立即执行所有预先绘制。
    r.PreTileTextures 如果设置为1,纹理将在烹饪过程中平铺,并且预计在运行时进行烹饪
    r.PreventInvalidMaterialConnections 控制用户是否可以在材质编辑器中建立连接,如果系统
    确定它们可能导致编译错误
    0:允许所有连接
    1:防止无效连接
    r.PreViewTranslation 为了限制浮动世界空间位置的问题,我们通过
    PreViewTranslation向量来抵消世界。此命令允许禁用更新此向量。
    0:禁用更新
    1:更新偏移量是每帧(默认)
    r.ProfileGPU.AssetSummaryCallOuts 逗号分隔的子串列表,在最终摘要中值得特别提及(例如,“LOD,HeroName” 
    r.ProfileGPU.PrintAssetSummary必须为true才能启用此功能
    r.ProfileGPU.Pattern 允许在使用ProfileGPU时过滤条目,模式匹配区分大小写。
    最后可以使用'*'来获取以字符串开头的所有条目。
    没有任何前导字符的'*'禁用模式匹配,而是使用时间阈值(默认)。
    '?' 允许忽略一个字符。
    例如AmbientOcclusionSetup,AmbientOcclusion *,Ambient ??? lusion *,*
    r.ProfileGPU.PrintAssetSummary 我们是否应该打印按资产拆分的摘要(强烈建议使用r.ShowMaterialDrawEvents)。
    r.ProfileGPU.Root 允许在使用ProfileGPU时过滤树,模式匹配区分大小写。
    r.ProfileGPU.Screenshot 是否应该在分析GPU时拍摄屏幕截图。0:关闭,1:开启(默认)
    r.ProfileGPU.ShowLeafEvents 允许profileGPU显示没有关联绘制的仅事件叶节点。
    r.ProfileGPU.ShowTransitions 允许profileGPU显示资源转换事件。
    r.ProfileGPU.ShowUI 是否应在分析GPU之后显示用户界面分析器。
    结果将始终转到日志/控制台
    0:关闭,1:开启(默认)
    r.ProfileGPU.Sort 在各种模式下,在树的每个级别独立地对TTY转储进行排序。
    0:
    按时间顺序1:经过时间
    2:按照prims数量
    3:按顶点数量
    r.PS4DumpShaderSDB 是否转储用于着色器关联的着色器sdb文件。
    0:禁用
    1:启用)
    r.PS4MixedModeShaderDebugInfo 是否编译着色器以允许混合模式着色器调试。这将导致生成较慢的代码。
    0:正常模式
    1:混合模式)
    r.RecompileRenderer 即时重新编译渲染器模块。
    r.ReflectionCapture 更新所有反射捕获
    r.ReflectionCaptureGPUArrayCopy 如果可能,请在调整大小时快速复制反射捕获阵列。当立方体贴图阵列需要增长时,这可以避免渲染线程上出现问题。
    0关闭,1打开(默认)
    r.ReflectionCaptureResolution 设置所有反射捕获立方体贴图的分辨率。应通过项目的渲染设置进行设置。必须是2的幂。默认为128。
    r.ReflectionEnvironment 是否渲染反射环境特征,该特征通过Reflection Capture actor实现局部反射。
    0:关闭
    1:开启并与场景混合(默认)2:开启并覆盖场景(仅限非运送版本)
    r.ReflectionEnvironmentBeginMixingRoughness 最小粗糙度值开始混合反射捕获与光照贴图间接漫反射。
    r.ReflectionEnvironmentEndMixingRoughness 用于结束混合反射的最小粗糙度值与光照贴图间接漫射一起捕获。
    r.ReflectionEnvironmentLightmapMixBasedOnRoughness 是否减少光照贴图与反射捕捉非常光滑的表面。这有助于确保反射捕获与亮度中的SSR /平面反射相匹配。
    r.ReflectionEnvironmentLightmapMixing 是否将反射捕获中的间接镜面反射与来自粗糙曲面的光照贴图的间接漫反射混合。
    r.ReflectionEnvironmentLightmapMixLargestWeight 设置为1时可用于钳制光照贴图混合,使得仅从光照贴图变暗以应用于反射捕获。
    r.RefractionQuality 定义折弯/折射质量,允许调整质量或性能。
    <= 0:关闭(最快)
    1:低质量(尚未实施)
    2:正常质量(默认)
    3:高质量(例如彩色条纹,尚未实施)
    r.RenderLastFrameInStreamingPause 如果在流播暂停期间显示前一帧。如果为零则屏幕保持黑色。
    r.RenderTargetPool.Events 在一帧中随时间可视化渲染目标池事件。可选参数以KB为单位定义阈值。
    要禁用视图,请使用不带任何参数的命令
    r.RenderTargetPoolMin 如果渲染目标池大小(以MB为单位)低于此数字,则不会释放rendertargetsDefault为200 MB。
    r.RenderTargetPoolTest 使用特殊颜色清除rendertarget池返回的纹理,
    以便我们可以更好地查看需要清除哪些通道。不适用于体积纹理和非rendertargets。
    0:关闭(默认),1:开启
    r.RenderTargetSwitchWorkaround 某些移动平台需要解决方法,以避免与切换渲染目标相关的性能下降。
    仅在某些硬件上启用。这有点影响了绽放质量。它比正常的代码路径运行得慢,但
    仍然更快,因为它避免了许多渲染目标开关。(默认值:0)
    我们希望在所有32位iOS设备上启用(1)(通过DeviceProfiles实现)。
    r.RenderTimeFrozen 允许冻结基于时间的效果,以提供更具确定性的渲染分析。
    0:关
    1:开(注意:这也会禁用遮挡查询)
    r.ResetViewState 重置某些状态(例如TemporalAA索引)以使渲染更具确定性(用于自动屏幕截图验证)
    r.RHICmdAsyncRHIThreadDispatch 执行RHI调度异步的实验选项。这样可以更快地将数据流入RHI线程,并避免在帧结束时出现阻塞。
    r.RHICmdBalanceParallelLists 允许启用绘图列表的预处理,以尝试在命令列表中平衡负载。
    0:关闭
    1:启用2:体验,使用前一帧结果(在分屏等中不做任何事情)
    r.RHICmdBalanceTranslatesAfterTasks 在渲染任务完成后平衡并行转换的实验选项。这最大限度地减少了延迟上下文的数量,但增加了启动翻译的延迟。r.RHICmdBalanceParallelLists会覆盖并禁用此选项
    r.RHICmdBasePassDeferredContexts 如果为True,则使用延迟上下文来并行化基本传递命令列表执行。
    r.RHICmdBufferWriteLocks 仅与RHI线程相关。调试选项以诊断缓冲锁的问题。
    r.RHICmdBypass 是否绕过rhi命令列表并立即发送rhi命令。
    0:禁用(多线程渲染器需要)
    1:启用(方便调试低级图形API调用,可以抑制多线程渲染器代码中的工件)
    r.RHICmdCollectRHIThreadStatsFromHighLevel 这会在RHI线程上执行推送统计信息,以便您可以确定它们来自哪个高级别传递。这对帧速率有不利影响。默认情况下启用此选项。
    r.RHICmdDeferSkeletalLockAndFillToRHIThread 如果> 0,则在RHI线程上执行骨骼和布料副本。实验选项。
    r.RHICmdFlushOnQueueParallelSubmit 等待提交后立即完成并行命令列表。用于问题诊断。仅适用于某些RHI。
    r.RHICmdFlushRenderThreadTasks 如果为true,则每次传递都会刷新渲染线程任务。用于问题诊断。这是用于更细粒度的cvar的主交换机。
    r.RHICmdFlushRenderThreadTasksBasePass 等待基本传递结束时完成并行渲染线程任务。更精细的r.RHICmdFlushRenderThreadTasks版本。如果r.RHICmdFlushRenderThreadTasks或r.RHICmdFlushRenderThreadTasksBasePass> 0,我们将刷新。
    r.RHICmdFlushRenderThreadTasksPrePass 等待预通过结束时完成并行渲染线程任务。更精细的r.RHICmdFlushRenderThreadTasks版本。如果r.RHICmdFlushRenderThreadTasks或r.RHICmdFlushRenderThreadTasksPrePass> 0,我们将刷新。
    r.RHICmdFlushRenderThreadTasksShadowPass 等待每个阴影传递结束时完成并行渲染线程任务。更精细的r.RHICmdFlushRenderThreadTasks版本。如果r.RHICmdFlushRenderThreadTasks或r.RHICmdFlushRenderThreadTasksShadowPass> 0,我们将刷新。
    r.RHICmdFlushRenderThreadTasksTranslucentPass 等待半透明传递结束时完成并行渲染线程任务。更精细的r.RHICmdFlushRenderThreadTasks版本。如果r.RHICmdFlushRenderThreadTasks或r.RHICmdFlushRenderThreadTasksTranslucentPass> 0,我们将刷新。
    r.RHICmdFlushRenderThreadTasksVelocityPass Wait for completion of parallel render thread tasks at the end of the velocity pass. A more granular version of r.RHICmdFlushRenderThreadTasks. If either r.RHICmdFlushRenderThreadTasks or r.RHICmdFlushRenderThreadTasksVelocityPass is > 0 we will flush.
    r.RHICmdFlushUpdateTextureReference If true, then we flush the rhi thread when we do RHIUpdateTextureReference, otherwise this is deferred. For issue diagnosis.
    r.RHICmdForceRHIFlush Force a flush for every task sent to the RHI thread. For issue diagnosis.
    r.RHICmdMergeSmallDeferredContexts When it can be determined, merge small parallel translate tasks based on r.RHICmdMinDrawsPerParallelCmdList.
    r.RHICmdMinCmdlistForParallelSubmit Minimum number of parallel translate command lists to submit. If there are fewer than this number, they just run on the RHI thread and immediate context.
    r.RHICmdMinCmdlistForParallelTranslate If there are fewer than this number of parallel translates, they just run on the RHI thread and immediate context. Only relevant if r.RHICmdBalanceTranslatesAfterTasks is on.
    r.RHICmdMinCmdlistSizeForParallelTranslate In kilobytes. Cmdlists are merged into one parallel translate until we have at least this much memory to process. For a given pass, we won't do more translates than we have task threads. Only relevant if r.RHICmdBalanceTranslatesAfterTasks is on.
    r.RHICmdMinDrawsPerParallelCmdList The minimum number of draws per cmdlist. If the total number of draws is less than this, then no parallel work will be done at all. This can't always be honored or done correctly. More effective with RHICmdBalanceParallelLists.
    r.RHICmdPrePassDeferredContexts True to use deferred contexts to parallelize prepass command list execution.
    r.RHICmdShadowDeferredContexts True to use deferred contexts to parallelize shadow command list execution.
    r.RHICmdSpewParallelListBalance For debugging, spews the size of the parallel command lists. This stalls and otherwise wrecks performance.
    0: off (default)
    1: enabled (default)
    r.RHICmdStateCacheEnable If > 0, then enable a minor state cache on the from of cmdlist recording.
    r.RHICmdTranslucencyPassDeferredContexts True to use deferred contexts to parallelize base pass command list execution.
    r.RHICmdUseDeferredContexts True to use deferred contexts to parallelize command list execution. Only available on some RHIs.
    r.RHICmdUseParallelAlgorithms True to use parallel algorithms. Ignored if r.RHICmdBypass is 1.
    r.RHICmdUseThread 使用RHI线程。用于问题诊断。
    r.RHICmdVelocityPassDeferredContexts 如果为True,则使用延迟上下文来并行化速度传递命令列表执行。
    r.RHICmdWidth 控制并行渲染器中的大量事物的任务粒度。
    r.RHISetGPUCaptureOptions 用于更改多个CVAR的实用程序功能在分析或调试GPU渲染时非常有用。设置为1或0将保证所有选项都处于适当的状态。
    r.rhithread.enable,r.rhicmdbypass,r.showmaterialdrawevents,toggledrawevents 
    平台RHI可以实现更多功能切换。
    r.RHIThread.Enable 启用/禁用RHI线程
    r.Roughness.Max 通过将粗糙度重新设置为1到新值(0..1),可以进行快速材料测试,仅适用于非装运!
    1 :(默认)
    r.Roughness.Min 通过将粗糙度重新设置为0到新值(0..1),可以进行快速材料测试,仅适用于非装运!
    0 :(默认)
    r.SaveEXR.CompressionQuality 定义我们如何以EXR格式保存HDR屏幕截图。
    0:无压缩
    1:默认压缩可能很慢(默认)
    r.SceneAlpha 0表示禁用场景alpha通道支持。
    0:禁用(默认)
    1:启用
    r.SceneColorFormat 定义用于场景颜色的内存布局(RGBA)
    (影响性能,主要通过带宽,质量,尤其是半透明度)。
    0:PF_B8G8R8A8 32位(主要用于测试,可能无法用于HDR)
    1:PF_A2B10G10R10 32位
    2:PF_FloatR11G11B10 32位
    3:PF_FloatRGB 32位
    4:PF_FloatRGBA 64位(默认情况下,可能过度,特别是如果半透明主要使用SeparateTranslucency)
    5:PF_A32B32G32R32F 128Bit (不合理但有利于测试)
    r.SceneColorFringe.Max 允许钳制后处理设置(百分比,场景色差/彩色条纹,以模拟真实世界镜头中发生的伪影,大部分在图像角落中可见)
    -1:不夹紧(默认)
    -2:进行测试极端的边缘
    r.SceneColorFringeQuality 0:关闭但最佳性能
    1:3纹理样本(默认)n
    r.SceneRenderTargetResizeMethod 控制场景渲染目标调整大小的方法:( 
    此值仅用于游戏模式和窗口平台。)
    0:调整大小以匹配请求的渲染大小(默认)(最小内存使用,当大小更改时可能导致失速,例如ScreenPercentage)
    1:固定为屏幕分辨率。
    2:扩展以包含最大请求的渲染维度。(大多数内存使用,最不容易出现分配停顿。)
    r.ScreenPercentage 以较低的分辨率和高级渲染以获得更好的性能(与可变的后期处理设置相结合)。
    70是低混叠和性能的良好值,可以用'show TestImage' 
    以百分比,> 0和<= 100 来验证,更大的数字是可能的(超级采样)但是下采样质量是可以改进的。<0被视为100。
    r.ScreenPercentage.Editor 允许在编辑器中具有ScreenPercentage的效果。
    0:关闭(默认)
    1:允许上采样(模糊但更快)和下采样(cripser但更慢)
    r.ScreenshotDelegate ScreenshotDelegates可防止处理传入的屏幕截图请求并破坏某些功能。这允许禁用它们。
    理想情况下,我们将委托代码重新编写为不需要。
    0:关
    1:代表开启(默认)
    r.SelectiveBasePassOutputs 使着色器仅导出到相关的rendertargets。
    0:导出所有rendertargets。
    1:仅导出到相关的rendertarget。
    r.SeparateTranslucency 允许禁用单独的半透明功能(所有半透明在单独的RT中呈现,并
    在DOF后合成,如果材料中未另行指定)。
    0:关闭(半透明度受景深影响)
    1:关于成本GPU性能和内存,但保持半透明不受景深影响。(默认)
    r.SeparateTranslucencyAutoDownsample Whether to automatically downsample separate translucency based on last frame's GPU time.
    Automatic downsampling is only used when r.SeparateTranslucencyScreenPercentage is 100
    r.SeparateTranslucencyDurationDownsampleThreshold When smoothed full-res translucency GPU duration is larger than this value (ms), the entire pass will be downsampled by a factor of 2 in each dimension.
    r.SeparateTranslucencyDurationUpsampleThreshold When smoothed half-res translucency GPU duration is smaller than this value (ms), the entire pass will be restored to full resolution.
    This should be around 1/4 of r.SeparateTranslucencyDurationDownsampleThreshold to avoid toggling downsampled state constantly.
    r.SeparateTranslucencyMinDownsampleChangeTime Minimum time in seconds between changes to automatic downsampling state, used to prevent rapid swapping between half and full res.
    r.SeparateTranslucencyScreenPercentage Render separate translucency at this percentage of the full resolution.
    in percent, >0 and <=100, larger numbers are possible (supersampling).<0 is treated like 100.
    r.SeparateTranslucencyUpsampleMode Upsample method to use on separate translucency. These are only used when r.SeparateTranslucencyScreenPercentage is less than 100.
    0: bilinear 1: Nearest-Depth Neighbor (only when r.SeparateTranslucencyScreenPercentage is 50)
    r.SetNearClipPlane Set the near clipping plane (in cm)
    r.SetRes Set the display resolution for the current game view. Has no effect in the editor.
    e.g. 1280x720w for windowed
    1920x1080f for fullscreen
    1920x1080wf for windowed fullscreen
    r.ShaderDevelopmentMode 0: Default, 1: Enable various shader development utilities, such as the ability to retry on failed shader compile, and extra logging as shaders are compiled.
    r.ShaderPipelines Enable using Shader pipelines.
    r.Shaders.BoundsChecking Whether to explicitly enforce bounds-checking & flush-to-zero/ignore for buffer reads & writes in shaders. Defaults to 0 (disabled - maintains previous behaviour). Not all shader languages can omit bounds checking.
    r.Shaders.FastMath Whether to use fast-math optimisations in shaders.
    r.Shaders.KeepDebugInfo 是否保持着色器反射和从着色器字节码调试数据,默认是剥离。使用像Nsight这样的图形化调试器时,在启动时启用它会很有用。
    r.Shaders.Optimize 是否优化着色器。使用像Nsight这样的图形调试器时,在启动时禁用它会很有用。
    r.Shaders.ZeroInitialise 是否在着色器中显式归零初始化基本类型的局部变量。默认为0(禁用 - 保持以前的行为)。并非所有着色器语言都可以省略零初始化。
    r.Shadow.CachedShadowsCastFromMovablePrimitives 是否可移动图元应从缓存的整个场景阴影(可移动点和聚光灯)投射阴影。
    禁用此功能可用于删除缓存的阴影贴图的副本。
    r.Shadow.CachePreshadow 是否可以将预阴影作为优化进行缓存
    r.Shadow.CacheWholeSceneShadows 启用后,来自静态图元的可移动点和聚光灯整个场景阴影深度将作为优化进行缓存。
    r.Shadow.CacheWPOPrimitives 是否可以将其材质使用World Position Offset的基元视为可移动的缓存阴影贴图。
    Enablings可以使用WPO的材质提供更正确但更慢的整个场景阴影。
    r.Shadow.ConservativeBounds 是否使用安全和保守的阴影平截头体创建,浪费一些阴影贴图空间
    r.Shadow.CSM.MaxCascades 用于渲染动态方向光阴影的最大级联数。
    r.Shadow.CSM.MaxMobileCascades 使用移动渲染器时用于渲染动态方向灯光阴影的最大级联数。
    r.Shadow.CSM.TransitionScale 允许缩放级联阴影贴图过渡区域。在0..2内夹紧。
    0:无转换(最快)
    1:在灯光设置中特定(默认)
    2:比灯光中指定的大2倍
    r.Shadow.CSMDepthBias CSM使用的恒定深度偏差
    r.Shadow.CSMDepthBoundsTest 是否对CSM边界使用深度边界测试而不是模板测试
    r.Shadow.CSMSplitPenumbraScale 应用于级联阴影贴图分割的半影大小的缩放,可用于最小化分割之间的过渡
    r.Shadow.DistanceScale 可扩展性选项,用于交换阴影距离与定向灯的性能(夹在合理范围内)。
    <1:较短距离
    1:正常(默认)
    > 1:较大距离
    r.Shadow.DrawPreshadowFrustums 启用shadowfrustums show flag时可视化预阴影截头
    r.Shadow.EnableModulatedSelfShadow 允许调制阴影影响阴影施法者。(仅限手机)
    r.Shadow.FadeExponent 控制阴影淡出的速率
    r.Shadow.FadeResolution 纹理分辨率低于阴影淡出的分辨率
    r.Shadow.ForceSingleSampleShadowingFromStationary 是否强制所有组件的行为就像启用了bSingleSampleShadowFromStationaryLights一样。禁用动态阴影时,可用于可伸缩性。
    r.Shadow.FreezeCamera 通过允许从外部观察系统来调试阴影方法。
    0:默认
    1:冻结当前位置的摄像头
    r.Shadow.MaxResolution 允许渲染阴影深度的最大方形尺寸(以纹素为单位)。范围4到硬件限制。更高=更高质量的阴影,但性能成本。
    r.Shadow.MinPreShadowResolution 允许渲染预阴深度的最小尺寸(以纹素为单位)
    r.Shadow.MinResolution 允许渲染阴影主题深度的最小尺寸(以纹素为单位)
    r.Shadow.PerObject 是否为每个对象渲染阴影(在世界上进行角色渲染)
    0:关闭
    1:开启(默认)
    r.Shadow.PerObjectDirectionalDepthBias 来自定向光的每个对象阴影使用的恒定深度偏差
    较低的值可提供更好的自阴影,但会增加自阴影伪影
    r.Shadow.PointLightDepthBias 深度偏差应用于深度通过点光源的阴影。(0.03避免peter paning但有一些阴影痤疮)
    r.Shadow.PreshadowExpand 渲染缓存预阴影时将扩展多少边界(0.15 =大15%)
    r.Shadow.PreShadowFadeResolution 分辨率低于其中的预阴影淡出
    r.Shadow.PreShadowResolutionFactor 多重影像预分辨率
    r.Shadow.Preshadows 是否允许预阴影(静态世界投射角色)
    r.Shadow.PreshadowsForceLowestDetailLevel 启用后,静态网格物体将其最低细节级别渲染到预阴影深度贴图中。默认情况下禁用,因为它会导致具有低质量LOD(树广告牌)的工件。
    r.Shadow.RadiusThreshold 如果它们太小则剔除阴影脚轮,值是最小屏幕空间边界球半径
    (默认值0.03)
    r.Shadow.RadiusThresholdRSM 如果它们太小,则在RSM中剔除阴影脚轮,值是最小屏幕空间边界球半径
    (默认值为0.06)
    r.Shadow.SpotLightDepthBias 在每个对象的深度通道中应用的深度偏差从聚光灯投射阴影
    r.Shadow.SpotLightTransitionScale 聚光灯的过渡尺度
    r.Shadow.StencilOptimization 通过在测试期间将模板归零来消除阴影投影之间的模板清除
    r.Shadow.TexelsPerPixel 每个对象阴影的主题像素与阴影纹理像素的比率
    r.Shadow.TexelsPerPixelSpotlight 聚光灯的主体像素与阴影纹素的比率
    r.Shadow.TransitionScale 这可以控制施法者与阴影出现之间的“淡入”区域。较大的值会产生较小的区域,从而产生更多的自阴影伪影
    r.Shadow.UnbuiltNumWholeSceneDynamicShadowCascades DynamicShadowCascades在使用CSM从定向灯预览未构建的灯光时使用
    r.Shadow.UnbuiltWholeSceneDynamicShadowRadius 使用CSM从定向灯预览未构建的灯光时使用的WholeSceneDynamicShadowRadius
    r.Shadow.WholeSceneShadowCacheMb 可用于缓存整个场景阴影的内存量。单帧中的ShadowMap分配可能导致超出此范围。
    r.Shadow.WholeSceneShadowUnbuiltInteractionThreshold 在灯光切换到整个场景阴影之前,灯光可以有多少未建立的光线 - 原始相互作用
    r.ShadowQuality 定义允许调整质量或性能的阴影方法。
    0:关闭,1:低(未过滤),2:低... 5:最大(默认)
    r.ShowMaterialDrawEvents 如果平台支持,则在每个材质绘制周围启用绘制事件
    r.ShowPrecomputedVisibilityCells 如果不为零,则绘制所有预先计算的可见性单元格。
    r.ShowRelevantPrecomputedVisibilityCells 如果不为零,则仅绘制相关的预计算可见性单元格。
    r.ShowShaderCompilerWarnings 设置为1时,将显示所有警告。
    r.SimpleForwardShading 是否使用仅支持光照贴图的简单前向着色基本光标着色器+静止定向光+固定天窗
    所有其他光照功能在真实时禁用。这对于支持极低端硬件很有用,并且仅在PC平台上受支持。
    0:关闭,1:开启
    r.SkeletalMeshLODBias 骨骼网格的LOD偏差。
    r.SkeletalMeshLODRadiusScale 用于计算骨架网格的离散LOD的屏幕半径的比例因子。(0.25-1)
    r.SkinCache.BufferSize 用于以字节为单位写出顶点的最大内存
    分割为GPUSKINCACHE_FRAMES块(例如,300 MB表示3帧为100 MB)
    默认值为99MB。仅与r.SkinCache.Mode = 1一起使用
    r.SkinCache.CompileShaders 是否编译GPU计算皮肤缓存着色器。
    这将编译着色器以在计算作业上进行蒙皮,而不是在顶点着色器上进行蒙皮。
    如果更改,则需要触摸GPUSkinVertexFactory.usf以导致重新编译。
    0关闭(默认),1打开
    r.SkinCache.Debug 传递给SkinCache着色器的常量,对调试很有用
    r.SkinCache.MaxGPUElementsPerFrame 每帧最大计算处理的皮肤缓存元素。仅与r.SkinCache.Mode = 1一起使用
    (默认值为1000)
    r.SkinCache.Mode 是否使用GPU计算换肤缓存。
    这将在计算作业上执行蒙皮,而不是在顶点着色器上执行蒙皮。
    需要r.SkinCache.CompileShaders = 1 
    0:off 
    1:on(默认值)2:仅对勾选了“重新计算切线”复选框的蒙皮网格使用外观缓存(在发布版本中不可用)
    r.SkinCache.RecomputeTangents 此选项可以重新计算GPU上的顶点切线。
    可以在运行时更改,需要r.SkinCache.CompileShaders = 1和r.SkinCache.Mode = 1 
    0:off 
    1:on,强制所有蒙皮对象为Tecompute Tangents 
    2:on,仅重新计算勾选了对象的蒙皮对象上的切线Tecompute Tangents复选框(默认)
    r.SkinCache.Safety 在阶段
    0 上运行时要禁止ensure()和check():禁用ensure()和check()
    1:启用ensure()和check()(默认值)
    r.SkySpecularOcclusionStrength 来自DFAO的天窗镜面遮挡强度(默认值为1.0)
    r.SSR.Cone 定义我们是否使用锥形跟踪屏幕空间反射
    0关闭(默认),1打开
    r.SSR.MaxRoughness 允许覆盖后期处理设置ScreenSpaceReflectionMaxRoughness。
    它定义了直到我们淡化屏幕空间反射的粗糙度,0.8运行良好,较小可以运行得更快。
    (用于测试,无可伸缩性或项目设置)
    0..1:使用指定的最大粗糙度(
    覆盖PostprocessVolume设置)-1:无覆盖(默认)
    r.SSR.Quality 是否使用屏幕空间反射和质量设置。
    (限制后期处理设置中具有不同比例的设置)
    (成本性能,增加更多视觉真实感但技术有限制)
    0:关闭(默认)
    1:低(无光泽)
    2:中等(无光泽)
    3 :高(有光泽/使用粗糙度,少量样品)
    4:非常高(实时可能太慢)
    r.SSR.Stencil 定义我们是否使用模板预通过屏幕空间反射
    0关闭(默认),1打开
    r.SSR.Temporal 定义我们是否使用时间平滑来屏幕空间反射
    0关闭(用于调试),1打开(默认)
    r.SSS.Checkerboard 启用或禁用棋盘格渲染以进行地下轮廓渲染。
    如果SceneColor不包含浮点alpha通道(例如32位格式),则必须执行此操作
    .0:禁用(高质量)
    1:启用(低质量)。表面照明的分辨率会降低。
    2:自动。如果我们有合适的rendertarget格式,将应用非棋盘照明
    r.SSS.Filter 定义Screenspace Subsurface Scattering功能的过滤方法。
    0:点过滤器(用于测试,可以更清洁)
    1:双线性过滤器
    r.SSS.HalfRes 0:完整质量(未优化,作为参考)
    1:算法的一部分以半分辨率运行,质量较低但速度较快(默认)
    r.SSS.Quality 使用SubsurfaceScatteringProfile着色模型
    0 时定义重组过程的质量:低(更快,默认)
    1:高(更清晰的细节但更慢)
    -1:自动,如果禁用TemporalAA则为1(没有TemporalAA,质量更明显)
    r.SSS.SampleSet 定义我们用于Screenspace Subsurface Scattering功能的样本数量。
    0:最低质量(6 * 2 + 1)
    1:中等质量(9 * 2 + 1)
    2:高质量(13 * 2 + 1)(默认)
    r.SSS.Scale 影响屏幕空间次表面散射传递(使用shadingmodel SubsurfaceProfile,默认接近对象)
    是仅散布约1.2cm的人体皮肤)
    0:关闭(如果屏幕上没有对象使用此传递它应该自动禁用后处理通过)
    <1:向下舍入散射半径(用于测试)
    1:使用给定半径形成次表面散射资源(默认)
    > 1:向上扩散散射半径(用于测试)
    r.StaticMesh.EnableSaveGeneratedLODsInPackage 允许在包中保存生成的LOD。
    0 - 不保存(并隐藏此菜单选项)[默认]。
    1 - 启用此选项并将LOD保存在包中。
    r.StaticMesh.UpdateMeshLODGroupSettingsAtLoad 如果设置,将在加载时应用静态网格物体的LODGroup设置。
    r.StaticMeshLODDistanceScale 用于计算静态网格的离散LOD的距离的比例因子。(默认为1)
    (较高的值使LOD过早转换,例如,2是两倍的距离/一半的距离)
    r.StencilForLODDither 是否在预通道中使用模板测试,在基本通道中使用深度相等的测试来实现LOD抖动。
    如果禁用,LOD抖动将通过prepass和base pass中的clip()指令完成,这将禁用EarlyZ。
    启用后强制执行完整预通过。
    r.Streaming.Boost = 1.0:正常
    <1.0:减少所需的mip级别
    > 1.0:增加所需的mip级别
    r.Streaming.CheckBuildStatus 如果非零,引擎将检查纹理流是否需要重建。
    r.Streaming.DefragDynamicBounds 如果非零,则将从更新循环中删除未使用的动态边界
    r.Streaming.DropMips 0:Drop Mips 
    1:Drop Cached Mips 
    2:Drop Cached和Hidden Mips
    r.Streaming.FramesForFullUpdate 纹理流是每帧的时间切片。此值给出了访问所有纹理的帧数。
    r.Streaming.FullyLoadUsedTextures 如果非零,则所有使用的纹理将尽可能快地完全流式传输
    r.Streaming.HiddenPrimitiveScale 定义不在范围内时应用的分辨率比例。
    .5:放一个mip 
    1:忽略visiblity
    r.Streaming.HLODStrategy 定义HLOD流媒体策略。
    0:流
    1:仅流mip 0 
    2:禁用流
    r.Streaming.LimitPoolSizeToVRAM 如果非零,则纹理池大小限制为可用的GPU内存量。
    r.Streaming.MaxEffectiveScreenSize 0:使用当前实际垂直屏幕尺寸
    > 0:钳位要求mip尺寸计算垂直屏幕尺寸组件的此值。
    r.Streaming.MaxTempMemoryAllowed 流入或流出纹理mips时使用的最大临时内存。
    此内存包含用于新更新纹理的mips。
    该值必须足够高,以免成为限制流速度因子。
    r.Streaming.MinMipForSplitRequest 如果非零,则加载请求将首先加载可见mip的最小隐藏mip
    r.Streaming.MipBias 0..x通过浮点数减少流式传输的纹理质量。
    0:使用全分辨率(默认)
    1:掉落一个mip 
    2:掉落两个mips
    r.Streaming.NumStaticComponentsProcessedPerFrame 如果非零,则引擎将通过在每帧可见之前处理此组件数量来逐步插入级别
    r.Streaming.PoolSize -1:默认纹理池大小,否则以MB为单位
    r.Streaming.ScaleTexturesByGlobalMyBias 如果非零,则流纹理要求分辨率将通过全局mip偏差缩小
    r.Streaming.UseAllMips 如果非零,则将使用所有可用的mips
    r.Streaming.UseFixedPoolSize 如果非零,则不允许池大小在运行时更改。
    r.Streaming.UseMaterialData 如果非零,则将使用材质纹理比例和坐标
    r.Streaming.UseNewMetrics 如果非零,将使用改进的度量和启发式集。
    r.Streaming.UsePerTextureBias 如果非零,则根据需要为每个纹理分配0和MipBias之间的mip偏差以适合预算。
    r.SubsurfaceScattering 0:禁用
    1:启用(默认)
    r.SupportAllShaderPermutations 本地用户配置覆盖以强制启用所有着色器排列功能。
    r.SupportAtmosphericFog 启用AtmosphericFog着色器排列。
    r.SupportLowQualityLightmaps 支持低质量的光照贴图着色器排列
    r.SupportPointLightWholeSceneShadows 启用阴影投射点灯。
    r.SupportSimpleForwardShading 是否编译着色器以支持启用r.SimpleForwardShading(仅限PC)。
    r.SupportStationarySkylight 启用固定和动态天光着色器排列。
    r.SurfelDensity  
    r.SurfelLODDensityFraction  
    r.SurfelMaxPerObject  
    r.TargetPrecompileFrameTime 预编译时总帧时间的上限(以毫秒为单位),允许着色器缓存调整预编译每帧的着色器数量。默认为-1,它将立即预编译所有着色器。
    r.TemporalAACatmullRom 是否使用Catmull-Rom滤波器内核。应该比高斯更锐利。
    r.TemporalAACurrentFrameWeight 当前帧的重量对历史的贡献。低值会导致模糊和重影,高值无法隐藏抖动。
    r.TemporalAAFilterSize 过滤器内核的大小。(1.0 =更平滑,0.0 =更锐利但是别名)。
    r.TemporalAAPauseCorrect 暂停时纠正时间AA。这使渲染目标更长,从而防止重用并消耗更多内存。
    r.TemporalAASamples 时间AA的抖动位置数(4,8 =默认值,16,32,64)。
    r.TessellationAdaptivePixelsPerTriangle 全局镶嵌因子乘数
    r.TexelDebugging 是否在编辑器中单击鼠标左键选择光照贴图像素以调试Lightmass。必须重新编译Lightmass,并启用ALLOW_LIGHTMAP_SAMPLE_DEBUGGING才能生效。
    r.TextureStreaming 允许定义是否启用纹理流,可以在运行时更改。
    0:关
    1:开(默认)
    r.TiledDeferredShading 是否使用平铺延迟着色。0关闭,1打开(默认)
    r.TiledDeferredShading.MinimumCount 切换到平铺延迟之前必须在屏幕上显示的适用灯数。
    0表示所有符合条件的灯光(例如,没有阴影,......)都会被渲染平铺延迟。默认值:80
    r.TogglePreCulledIndexBuffers 切换使用命令'PreCullIndexBuffers'中的预先安排的索引缓冲区
    r.Tonemapper.ConfigIndexOverride 直接configindex覆盖。忽略所有其他tonemapper配置cvars
    r.Tonemapper.GrainQuantization 0:低(次要性能优势)
    1:高(默认情况下,使用高频像素模式对抗8位颜色量化)
    r.Tonemapper.MergeWithUpscale.Mode ScreenPercentage upscale集成到tonemapper传递中(如果某些条件适用,例如,没有FXAA)
    如果启用,两个功能都在一次通过中完成(更快,影响后处理过程,包括材质后期处理,例如锐化)
    0:关闭,功能运行在单独的传递中(默认)
    1:始终启用,尝试合并传递,除非某些事情使其不可能
    2:当区域的比率高于r.Tonemapper.MergeWithUpscale.Threshold时合并,否则可能
    r.Tonemapper.MergeWithUpscale.Threshold 如果r.Tonemapper.MergeWithUpscale.Mode为2,则
    在决定是否合并通过时,将高级/低级别之前的区域与之后的区域的比率与该阈值进行比较。原因是如果比率
    太低,在较高数量的像素上运行色调映射比将两次传递

    Defauls 更加昂贵到0.49(例如,如果r.ScreenPercentage为70或更高,请尝试合并)
    r.Tonemapper.Quality 在0..5范围内定义Tonemapper质量
    根据使用的设置,我们可以选择更快的着色器排列
    0:仅基本色调映射器,最低质量
    1:+ FilmContrast 
    2:+ Vignette 
    3:+ FilmShadowTintAmount 
    4:+ Grain 
    5:+ GrainJitter =全品质(默认)
    r.Tonemapper.Sharpen 在tonemapper中锐化(不适用于ES2),实际执行正在进行中,钳位在10 
    0:关闭(默认)
    0.5:半强度
    1:全强度
    r.TonemapperFilm 使用新的电影色调映射器
    r.TonemapperGamma 0:默认行为
    #:使用固定的gamma#而不是sRGB或Rec709变换
    r.TransitionChecksEnableDX11 在DX11 RHI中启用转换检查。
    r.TranslucencyLightingVolumeDim 用于半透明照明的体积纹理的尺寸。较大的纹理会导致更高的分辨率但性能更低。
    r.TranslucencyLightingVolumeInnerDistance 第一卷级联应该结束的相机距离
    r.TranslucencyLightingVolumeOuterDistance 第二卷级联应该结束的相机距离
    r.TranslucencyVolumeBlur 是否模糊半透明照明量。
    0:关闭,否则打开,默认值为1
    r.TranslucentLightingVolume 是否允许更新半透明照明量。
    0:关闭,否则打开,默认值为1
    r.TranslucentSortPolicy 0:根据从摄像机中心点到边界球体中心点的距离进行排序。(默认情况下,最适合3D游戏)
    1:根据与相机的投影距离进行排序.2:根据投影到固定轴上进行排序。(最适合2D游戏)
    r.TranslucentVolumeFOVSnapFactor 在计算体积界限之前,FOV将被捕捉到这个因子。
    r.TranslucentVolumeMinFOV 半透明照明体积的最小FOV。放大时防止出现光照。
    r.TriangleOrderOptimization 控制在优化变换后缓存的三角形顺序时使用的算法。
    0:使用NVTriStrip(较慢)
    1:使用Forsyth算法(最快)(默认)2:无三角形顺序优化。(效率最低,仅用于调试目的)
    r.UnbindResourcesBetweenDrawsInDX11 解除DX11中材料更改之间的资源绑定。
    r.UniformBufferPooling 如果我们在RHICreateUniformBuffer中汇集对象,则对创建缓冲区的实际API调用较少
    0:off(用于调试)
    1:on(优化)
    r.Upscale.Panini.D 允许并配置为渲染图像应用panini失真。0到1之间的值允许淡化效果(lerp)。
    从研究论文“Pannini:用于渲染广角透视图像的新投影”实现
    0:关闭(默认)
    > 0:启用(如果未使用上采样,则需要额外的后处理过程 - 请参阅r.ScreenPercentage)
    1:Panini圆柱形立体投影
    r.Upscale.Panini.S 帕尼尼投影的硬垂直压缩系数。
    0:无垂直压缩系数(默认)
    1:硬垂直压缩
    r.Upscale.Panini.ScreenFit 帕尼尼投影屏适合效果因子(lerp)。
    0:垂直适合
    1:水平适合(默认)
    r.Upscale.Quality 定义ScreenPercentage和WindowedFullscreen缩放3d渲染的质量。
    0:最近的滤波
    1:简单的双线性
    2:使用非锐化掩模上传的方向模糊。
    3:5-tap Catmull-Rom bicubic,近似Lanczos 2.(默认)
    4:13-tap Lanczos 3. 5:36 
    抽头高斯滤波非锐化掩模(非常昂贵,但非常适合极端上采样)。
    r.Upscale.Softness 高斯反锐化滤波器的锐化量(r.UpscaleQuality = 5)。如果振铃可见则减少
    1:正常锐化(默认)
    0:无锐化(纯高斯)。
    r.UseAsyncShaderPrecompilation 如果为true,则尝试在后台线程上异步执行初始着色器预编译。默认为false。
    r.UseFastDebugObjectDiscovery 启用新的优化调试对象发现
    r.UseMobileBloom HACK:设置为1以使用移动绽放。
    r.UseParallelGetDynamicMeshElementsTasks 如果> 0,并且如果FApp :: ShouldUseThreadingForPerformance(),那么GetDynamicMeshElements的部分将并行完成。
    r.UseProgramBinaryCache 如果为true,则启用二进制程序缓存
    r.UseShaderBinaryCache 如果为true,则生成并使用已使用的着色器二进制文件的单独缓存,以便更早提交 - 可能是平台甚至是设备特定的。默认为false。
    r.UseShaderCaching 如果为true,则记录所有着色器和绑定着色器状态,以便它们可以在反序列化时在RHI中实例化,而不是等待首次使用。
    r.UseShaderDrawLog 如果为true,则记录用于每个着色器管道的所有绘制状态,以便可以批量预绘制它们(请参阅:r.UseShaderPredraw)。这可能很昂贵,只应在生成着色器缓存时使用。
    r.UseShaderPredraw 在用于减少由于驱动程序内重新编译引起的故障之前,使用现有的绘图日志批量预先绘制着色器。
    r.VelocityTest 允许为速度渲染启用一些低级测试代码(影响对象运动模糊和TemporalAA)。0:关闭(默认)1:将随机数据添加到我们存储骨架网格骨骼数据的缓冲区中以测试代码(也适合在PAUSED中测试)。
    r.VertexFoggingForOpaque 导致不透明材质使用逐顶点雾化,这样可以降低成本并与MSAA正确集成。仅支持前向着色。
    r.ViewDistanceScale 控制视图距离刻度。基元的MaxDrawDistance由此值缩放。
    较高的值将增加视距,但性能成本较高。
    默认值= 1.值应在[0.0f,1.0f]范围内。
    r.ViewportTest 允许在使用Matinee / Editor时测试不同的视口矩形配置(仅在游戏中)。
    0:关闭(默认)
    1..7:各种配置
    r.VirtualTexture 如果设置为1,纹理将使用虚拟内存,因此它们可以部分驻留。
    r.VirtualTextureReducedMemory 如果设置为1,则使用更多打包布局将减少虚拟纹理的成本。
    r.VisualizeOccludedPrimitives 为所有被遮挡的基元绘制框
    r.VisualizeTexturePool 允许可视化纹理池(目前仅在控制台上)。
    0:关闭(默认)
    1:开启
    r.VPLDirectionalLightTraceDistance  
    r.VPLGridDimension  
    r.VPLMeshGlobalIllumination  
    r.VPLPlacementCameraRadius  
    r.VPLSelfOcclusionReplacement  
    r.VPLSpreadUpdateOver  
    r.VPLSurfelRepresentation  
    r.VPLViewCulling  
    r.VSync 0:禁用VSync。(默认值)
    1:启用VSync。
    r.VSyncEditor 0:在编辑器中禁用VSync。(默认值)
    1:在编辑器中启用VSync。
    r.Vulkan.UseGLSL 2使用ES GLSL 
    1使用GLSL 
    0来使用SPIRV
    r.Vulkan.UseRealUBs 如果为true,则在Vulkan ES2模式下启用模拟统一缓冲区。
    r.WarnOfBadDrivers 在引擎启动时,我们可以检查当前的GPU驱动程序并警告用户有关问题并建议特定版本
    测试速度很快,因此不应该花费任何性能。
    0:关闭
    1:启动时可能出现一条消息(默认)
    2:模拟系统有一个列入黑名单的NVIDIA驱动程序(应该出现UI)
    3:模拟系统有一个列入黑名单的AMD驱动程序(应该出现UI)
    4:模拟系统有一个未列入黑名单的AMD驱动程序(不应出现UI)
    5:模拟系统有一个Intel驱动程序(不应出现UI)
    r.WideCustomResolve 启用MSAA时使用宽自定义解析过滤器0:禁用[硬件盒过滤器] 1:宽(r = 1.25,12个样本)2:更宽(r = 1.4,16个样本)3:最宽(r = 1.5,20个样本)
    r.WireframeCullThreshold 阈值低于正线框视图中的对象将被剔除。
    r.XGEShaderCompile 启用或禁用使用XGE构建着色器。
    0:仅限本地构建。
    1:使用XGE分发构建(默认)。
    r.XGEShaderCompile.BatchGroupSize 指定要使用着色器填充的批次数。
    着色器分布在这批次中,直到所有批次都已满。
    这允许在编译少量着色器时XGE编译更宽。
    默认= 128
    r.XGEShaderCompile.BatchSize 指定要一起批处理到单个XGE任务中的着色器数。
    默认= 16
    r.XGEShaderCompile.JobTimeout 在开始构建之前等待提交其他着色器作业的秒数。
    默认值= 0.5

     

    展开全文
  • Linux命令

    2016-10-03 14:10:47
    Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解...
  • //打开命令终端 ctrl+d //关闭命令终端 exit //退出当前连接用户或者退出命令终端 Tab //自动补全命令 cd //切换到根目录 cd .. //切换到上级目录 cd ../.. //切换到上两级目录 cd ~ //切换到用户根目录...
  • PADS 的 无模命令和快捷键

    千次阅读 2010-06-24 13:50:00
    1.PADS2007无模命令与快捷键 D+O: 设置通孔显示模式 P+O: 设置铜只显示外框形式 L: 改变当前层(如改当前层为第二层,为L2) Q: 测量,从当前位置开始测量 W: 改变线宽...
  • Android adb 命令大全

    千次阅读 2019-07-02 12:28:09
    ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的...持续更新中,欢迎提 PR Issue 补充指正,觉得有用的可以将 此 GitHub 仓库 Star 收藏备用。 注: 有部分命令的支持情况可能与 Android...
  • Linux命令大全

    千次阅读 2021-03-02 21:24:51
    Linux命令大全 一、系统管理与设置 1、信息显示命令 # man & info //帮助手册 # man 命令 //显示相应命令的帮助内容 # arch //显示当前系统体系结构 # cal //显示当前月份 # cal 2012 //显示2012年的月历 ...
  • ansys 常见命令集合

    千次阅读 2018-08-10 14:12:52
    APDL换行与续行- APDL规定每行72个字符 如果要写表达式A=C1+C2 (C1与C2都为表达式 可以用 B=C1 A=B+C2 将一行拆成两行来做但是如果不是表达式,而是输入一个命令参数过多的
  • 总结DOS命令和电脑安全相关

    千次阅读 2010-02-26 09:41:00
    13.fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> ""> >" 是重定向命令 14.nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为...
  • ffmpeg 常用命令汇总

    万次阅读 多人点赞 2018-02-06 16:01:37
     part 1: 经常用到ffmpeg 做一些视频数据的处理转换等,用来做测试,今天总结了一下,参考了网上部分朋友的经验,一起在...命令格式:  ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]  ff...
  • LINUX命令总结

    万次阅读 2014-01-27 15:54:20
    18、为什么root执行好多命令都说command not found 一定是telnet上来的,然后su成root的,修改su命令格式,应该是su - root 0025 关闭用户的POP3权限(tiansgx) 把POP3的端口关了就可以了。 在文件/etc/services中...
  • Linux常用命令

    2014-05-06 11:27:32
    利用tar命令,可以把一大堆的文件目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。 语法:tar[主选项+辅选项] 文件或者目录 ...
  • telnet 命令使用方法详解,telnet命令怎么用?

    万次阅读 多人点赞 2017-11-08 13:42:53
    source: ... telnet 命令使用方法详解,telnet命令怎么用? 转载 2016年08月30日 09:10:57 标签:telnet 命令 47836 什么是Telnet?  对于Telnet的认识,不同的人持有
  • DOS命令大全

    千次阅读 2013-06-20 19:56:04
    分享一个DOS命令集合 DOS, 命令, 分享 相关词条:DOS, 命令, 分享   我也想创建词条赚积分 ...命令提示符下的常用命令 net startnet stop 来开启关闭服务 Windows快捷键大全 捆绑文件 文件扩展名 端口 8088
  • HTML5编写格式命令详解

    万次阅读 2015-12-17 21:56:52
     menubar,scrollbars 表示菜单栏滚动栏。  resizable=no 是否允许改变窗口大小,yes为允许;  location=no 是否显示地址栏,yes为允许;  status=no 是否显示状态栏内的信息(通常是文件...
  • Linux云计算命令大全

    千次阅读 2020-11-09 18:17:43
    云计算命令总结一、系统命令精讲二、目录文件管理三、安装及管理程序四、账号管理五、权限及归属管理六、磁盘管理七、文件系统与LVM八、服务器RAID及配置实战九、引导过程与服务控制十、进程计划任务管理十一、...
  • linux命令用途

    千次阅读 2017-09-20 09:52:03
    命令总结:100个 1:mkdir 创建目录的命令 make directorys 2: ls -1(long)d(directory)显示目录或者文件 全称list 3:cd 切换目录层次 change directory  cd . 当前目录  cd .. 去上一级目录 4:pwd 查看当前...
  • Linux系统运维常用命令集锦

    千次阅读 2019-08-19 18:35:20
    1、文件、目录操作命令(18个) ls 全拼为list,功能是列出目录的内容及其内容属性信息。 主要参数: -a:显示隐藏文件 -l:是以更详细的列表形式显示-S: 以下命令参数待不全: cd 全拼为change directory,功能是...
  • 我的第一篇文章,doc命令

    千次阅读 2018-12-31 10:33:43
    第一篇文章测试 欢迎使用Markdown编辑器 你好!...DOS:disk operate system,磁盘操作系统,DOS命令又分内部命令和外部命令。 内部命令又称为驻机命令,它是随着DOS系统的启动同时被加载到内存里且...
  • 这些额外选项很有代表地包含了列出的权威 DNS 的 IP 地址 ,这段输出可以用 +[no]additional 选项保留。 ;; Query time: 2046 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Aug 27 08:22:26 2004 ...
  • LINUX命令大全详解备忘录

    千次阅读 2016-09-09 17:59:38
    文件目录操作命令 ls命令 cd命令 pwd命令 mkdir命令 rm 命令 rmdir 命令 mv命令 cp 命令 touch 命令 cat 命令 nl命令 more命令 less 命令 head 命令 2014-12 tail 命令 文件查找命令 which命令 whereis 命令 locate ...
  • 使用adb命令控制Android

    千次阅读 2018-03-11 13:44:24
    从 emulator-5554 这个名字可以看出它是一个 Android 模拟器,而 10.129.164.6:5555 这种为 : 的 serialNumber 一般是无线连接的设备或 Genymotion 等第三方 Android 模拟器。 常见异常输出: 没有设备/...
  • RPM命令大全

    千次阅读 2007-11-16 16:34:00
    RPM命令大全
  • linux高级命令

    千次阅读 2017-02-23 15:40:06
    1:iptables 基本命令使用举例 http://blog.chinaunix.net/uid-9950859-id-98279.html  一、链的基本操作 1、清除所有的规则。 1)清除预设表filter中所有规则链中的规则。 # iptables -F 2)清除预设表filter中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,098
精华内容 5,239
关键字:

命令形和禁止性