前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统常用设置与查看命令一览表

系统常用设置与查看命令一览表

作者头像
全栈工程师修炼指南
发布2020-10-26 14:10:45
6240
发布2020-10-26 14:10:45
举报
文章被收录于专栏:全栈工程师修炼之路

set 命令

描述:显示、设置或删除 cmd.exe 环境变量, set,E文翻译过来就是“设置”的意思,相当于数学里的“令”。 用法和参数:

代码语言:javascript
复制
SET [variable=[string]]
SET /A expression
SET /P variable=[promptString]

#参数
variable  指定环境变量名
string    指定要指派给变量的一系列字符串
/P  提供一个交互界面,让用户自己输入变量的值,相当于Linux中Read命令让用户输入值并传入变量读取输入行之前,显示指定的promptString它可以是空的
/A(不区分大小)  命令行开关指定等号右边的字符串为被评估的数字表达式,进行数值运算相当于delcare命令

注意:如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。 注意:/A Expression表达式优先权顺序

代码语言:javascript
复制
()                  - 分组
! ~ -              - 一元运算符
* / %              - 算数运算符
+ -                - 算数运算符
<< >>              - 逻辑移位
&                 - 按位“与”
^                  - 按位“异”
|                  - 按位“或”
= *= /= %= += -=      - 赋值
&= ^= |= <<= >>=
,                  - 表达式分隔符

如果您使用任何逻辑或取余操作符,您需要将表达式字符串用引号””扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。

如果指定了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使您可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。

如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值,该分配的操作符在分配的操作符左边需要一个环境变量名称。

注意事项:

  • 除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字因此,0x12 与 18 和 022相同。
  • 请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。(& )
  • 如果使用set或echo %var%打印变量时要注意,如果用户环境变量 和 系统环境变量存在同样的变量时,默认会使用用户环境变量的值;

系统内置变量:

代码语言:javascript
复制
echo %path%
echo %Public%
echo %systemroot%
echo %userprofile%
%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值
%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行
%HIGHESTNUMANODENUMBER% - 扩展到此计算机上的最高 NUMA 节点号

实际案例:

代码语言:javascript
复制
#示例0.显示当前所有的环境变量和指定变量
C:\Users\WeiyiGeek> set   #显示所有
C:\Users\WeiyiGeek> set JAVA_HOME
JAVA_HOME=D:\Programs\java\jdk
#如果命令扩展被启用,SET 会如下改变:可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
C:\Users\WeiyiGeek> set p #显示P开头相关的变量

#示例1.交互式输入变量(与Linux中的Read命令相似)
#set /p 是命令语法 var是变量名 =号右边的"请输入变量的值: ",这个是提示语,不是变  
C:\Users\WeiyiGeek> set /p demo="Please Input demo variable:"
Please Input demo variable:whoami
C:\Users\WeiyiGeek> echo %demo%
whoami

#示例2.设置环境变量ADD与设置新的变量值
#set 指定环境变量名称=%PATH%要指派给变量的字符  
set path=%path%;c:\test\bin\  # set var=我是值这就是BAT直接在批处理中设置变量的方法

#示例3.变量的间接引用系统命令(bat中才可以进行变量引用赋值)
#set 是命令 var是变量名 =号右边的"我是值"是变量的值 在批处理中我们要引用这个变量就把var变量名用两个%(百分号)扩起来,如%var%  
C:\Users\WeiyiGeek> set test=hostname
C:\Users\WeiyiGeek> echo %test%
hostname                    #hostname系统变量字符串
C:\Users\WeiyiGeek> %test%  #关键点实际调用的是hotsname变量值
PC-20170910QIBZ

#示例4.特殊字符变量值转义
#描述:set str=ok> 这个在批处理运行过程中会出错,系统会提示:“命令语法不正确。”
#原因是,因为 变量str 中的值“ok>”的字符">"为一特殊字符,会被系统当成 定向 符处理,所以会运行出错,那如果确实要设置这样的变量str,值为 "ok>"怎么办呢?
#常见的解决办法将特殊字符转义,转义方法在该特殊字符前加一个“^”,如:
C:\Users\WeiyiGeek> set str=ok^>
C:\Users\WeiyiGeek> echo %str%
ok1>

#示例5.set进行进制转换和简单的计算[重点来了]
set /a a=Octal/十进制/Hex 
set /a a=022/18/0X12
``` 
![WeiyiGeek.](https://cdn.jsdelivr.net/gh/WeiyiGeek/blogimage/2019/1/20190923160405.png)

```bash
#示例6.数值运算
set /a var=1 + 1  
set /a 语法, var变量名 = 1 + 1 #数学式子
\Users\WeiyiGeek> set /a var=2 + 4,c=10 % 3
1
\Users\WeiyiGeek> echo %var% %c%
6 1
#还可以引用变量来加减:
\Users\WeiyiGeek> set /a var=%var% / 2
3

另外还有一些用逻辑或取余操作符,这些符号,按照上面的使用方法会报错的比如我们在CMD里输入set /a var=1 & 1 “与运算”,他并不会显示为1,而是报错, 为什么?

对于这样的”逻辑或取余操作符”,我们需要把他们用双引号引起来,看例子

代码语言:javascript
复制
#符号也可以用 &=  ^=  |=  <<=  >>= 这样的简单用法如
set /a var= 1 "&" 1    这样结果就显示出来了,其他逻辑或取余操作符用法 
set /a var= 1 "^" 1    异运算 
set /a var= 1 "%" 1    取模运算 
set /a var= 2 "<<" 2   位左移  2x(2x2) =>var1*(var1**var2)
set /a var= 4 ">>" 2   位右移  4/2 => var1*(var2*var2)
WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

代码语言:javascript
复制
#示例7.环境变量增强替换
set newVar="oldVar:str1=str2%" #将变量oldVar的值中的str1替换成str2,并将替换后的变量值赋给newVar. 
C:\Users\Administrator> set a=www.baidu.com
C:\Users\Administrator> echo %a%
www.baidu.com

C:\Users\Administrator>set a=%a:baidu=qq%  #进行变量值中字符串替换
C:\Users\Administrator>echo %a%
www.qq.com


#示例8.也可以为扩展名指定子字符串(相当于变量的字符串截取)
%Var:~start,len%      #从0开始
%PATH:~10,5%   #10->+5=15
#会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符。
C:\Users\WeiyiGeek> set "a=www.baidu.com"
C:\Users\WeiyiGeek> set t="%a:~0,3%"
C:\Users\WeiyiGeek>echo %t%
"www"

#注意两种赋值截取形式的不同
C:\Users\WeiyiGeek> set "a=www.baidu.com"
C:\Users\WeiyiGeek> set t=%a:~0,3%
C:\Users\WeiyiGeek> echo %t%
www  #没有双引号
WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

补充说明:

  • 关于“字符串截取”:%a:~[m[,n]]%:方括号表示可选,%为变量标识符,a为变量名不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可,m为偏移量(缺省为0,即截取从第1个字符开始),n为截取长度(缺省为全部)
  • 上面所述用法其实相当于vbs函数mid、left、right;%a:~0,n% 相当于函数left(a,n) 取左边n位 %a:~-m% 相当于函数right(a,m) 取右边m位 %a:~m,n% 相当于函数mid(a,m+1,n) 从m+1位开始取n位 %a:~m,-n% 相当于函数mid(a,m+1,len(a)-m-n),从m+1位开始,至倒数n+1位 %a:~m % 相当于函数mid(a,m+1,len(a)-m) 或者right(a,len(a)-m),从m+1位开始取右边全部。
setx命令

描述: 在用户或系统环境创建或修改环境变量,能基于参数、注册表项或文件输入设置变量。(可本地也可远程)

setx与set命令有什么不同? 答:setx能设置成为系统变量永久生效,而set命令则是临时生效;

代码语言:javascript
复制
#Windows10的PATH如何环境恢复默认
".;";C:\Windows\system32;C:\Window;D:\Program\FLEXSDK\bin;C:\Windows\System32\Wbe;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;D:\Builder\mingw64\bin;D:\Programs\java\jdk\bin;D:\Programs\java\jdk\jre;C:\Windows\SysWOW64;
#或者该路径找回
HYEK_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment;

用法和参数:

代码语言:javascript
复制
语法 1:SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
语法 2:SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
语法 3:SETX [/S system [/U [domain\]user [/P [password]]]] /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

#参数
var    指定要设置的环境变量。
value  指定分配给环境变量的值。
/K     regpath         指定变量是基于注册表项的信息而设置的,路径的格式应该是 hive\key\...\value HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName。
/F     file            指定要使用的文本文件的文件名。
/A     x,y             指定绝对文件坐标(线 X,项目 Y)作为在此文件里搜索的参数。
/R     x,y string      指定有关“字符串”作为搜索参数的相对文件坐标。
/X                     用 x,y 坐标显示文件内容。
/M                     指定应该在系统 (HKEY_LOCAL_MACHINE) 环境中设置此变量。在 HKEY_CURRENT_USER 环境下,默认将设置此变量。(常用设置成为系统变量)
/D     delimiters      指定其他限定符,如 "," 或 "\"。内置分隔符是空格、制表符、回车和换行符,所有ASCII 字符都可作为限定符。限定符的最大数量,包括内置分隔符,是 15。

实例演示:

代码语言:javascript
复制
#示例1.设置用户系统环境变量
SETX MACHINE COMPAQ                         #设置用户环境变量 
SETX MACHINE "COMPAQ COMPUTER" /M           #设置系统环境变量 
SETX PATH "%PATH%;c:\test\demo"             #设置软件加入到系统PATH环境变量中

#示例2.为远程主机添加用户和系统环境变量
SETX /S system /U user /P password  MACHINE COMPAQ
SETX /S system /U user /P password  MYPATH ^%PATH^% /m

#示例3.注册表操作
SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName
SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\CurrentBuildNumber" /M
SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName
SETX /S system /U user /P password  BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\CurrentBuildNumber" /M

#示例4.其他操作
SETX /F ipconfig.out /X
SETX IPADDR /F ipconfig.out /A 5,11
SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
SETX /S system /U user /P password  /F c:\ipconfig.out /X
WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

比如JDK加入PATH环境变量命令setx用来设环境变量(永久生效)

代码语言:javascript
复制
@ECHO OFF
set /p CD="Please Input JavaHome Path:"
IF EXIST %CD%\bin\java.exe (
IF EXIST %systemroot%\system32\setx.exe (
@ECHO "设置JAVA_HOME:%CD%"
@SETX JAVA_HOME %CD%
@ECHO "设置CLASSPATH:.;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"
@SETX CLASSPATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"
@ECHO "设置PATH:%%JAVA_HOME%%\bin"
@SETX PATH "%%JAVA_HOME%%\bin"
@ECHO JDK环境变量设置成功
) ELSE (
@ECHO ON
@ECHO 未能找到%systemroot%\system32\setx.exe,请下载setx.exe程序
)
) ELSE (
@ECHO ON
@ECHO JDK安装目录不正确,未能按照预期计划执行
)
@PAUSE

注意事项:

  • 1) SETX 在注册表中将变量写入主机环境。
  • 2) 在本地系统,用此工具创建或修改的变量将在以后的命令窗口可用,但在当前的 CMD.exe 命令窗口。
  • 3) 在远程系统,用此工具创建或修改的变量在下次登录会话可用。
  • 4) 有效的注册表项数据类型是 REG_DWORD,REG_EXPAND_SZ,REG_SZ和 REG_MULTI_SZ。
  • 5) 受支持的配置单元: HKEY_LOCAL_MACHINE (HKLM), HKEY_CURRENT_USER (HKCU)。
  • 6) 限定符区分大小写。
  • 7) REG_DWORD 的值是从注册表里以十进制格式提取出来的。
  • 8) 注意变量名最好是大写
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • setx命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档