windows批处理命令总结.md 6.9 KB

如果想更多的学习windows系统批处理知识,下面这几篇文章或许能够帮助你

查看命令帮助

#比如查看cd命令的帮助文档
cd /?

设置环境变量

1. 设置临时环境变量

set PATH=%PATH%;D:\xxx

此命令只对当前窗口有效,批处理或cmd窗口一关闭,变量就恢复原来的值了。

2. 设置永久环境变量

方法一

setx BAT_HOME C:\bat

注意:此命令会将变量添加到用户环境变量中。

方法二

setx /M BAT_HOME C:\bat

当前用户执行时,有可能会提示”错误: 拒绝访问注册表路径。”,如下

img

要使用管理员身份执行,才能执行成功。

img

方法三 通过注册表设置

::添加环境变量 BAT_HOME
@echo off
echo 添加 bat 环境变量
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set evname=BAT_HOME
set batpath=c:\bat
reg add "%regpath%" /v %evname% /d %batpath% /f
pause>nul

==必须以管理员权限运行==

::删除环境变量 BAT_HOME
@echo off
echo 删除bat环境变量
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set evname=BAT_HOME
reg delete "%regpath%" /v "%evname%"  /f
pause>nul

CMD窗口背景和字体颜色

color [attr]

下面是颜色代码:(如 color fc 为亮白色产生亮红色,第一个背景,第二个前景)
    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 湖蓝色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色

SC 服务管理

描述:
        SC 是用于与服务控制管理器和服务进行通信的命令行程序。
用法:
        sc <server> [command] [service name] <option1> <option2>...


        选项 <server> 的格式为 "\\ServerName"
        键入 "sc [command]" 可以获得有关命令的进一步帮助
        命令:
          query-----------查询服务的状态,
                          或枚举服务类型的状态。
          queryex---------查询服务的扩展状态,
                          或枚举服务类型的状态。
          start-----------启动服务。
          pause-----------向服务发送 PAUSE 控制请求。
          interrogate-----向服务发送 INTERROGATE 控制请求。
          continue--------向服务发送 CONTINUE 控制请求。
          stop------------向服务发送 STOP 请求。
          config----------更改服务的配置(永久)。
          description-----更改服务的描述。
          failure---------更改服务失败时执行的操作。
          failureflag-----更改服务的失败操作标志。
          sidtype---------更改服务的服务 SID 类型。
          privs-----------更改服务的所需权限。
          qc--------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询失败时服务执行的操作。
          qfailureflag----查询服务的失败操作标志。
          qsidtype--------查询服务的服务 SID 类型。
          qprivs----------查询服务的所需权限。
          qtriggerinfo----查询服务的触发器参数。
          qpreferrednode--查询首选的服务 NUMA 节点。
          delete----------(从注册表)删除服务。
          create----------创建服务(将其添加到注册表)。
          control---------向服务发送控制。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          showsid---------显示相应于假定名称的 SID 字符串。
          triggerinfo-----配置服务的触发器参数。
          preferrednode---设置首选的服务 NUMA 节点。
          GetDisplayName--获取服务的 DisplayName
          GetKeyName------获取服务的 ServiceKeyName。
          EnumDepend------枚举服务的依存关系。

        下列命令不要求服务名称:
        sc <server> <command> <option>
          boot------------(ok | bad) 指示是否将上一次启动保存为
                          最近一次已知的正确启动配置
          Lock------------锁定服务数据库
          QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
        sc start MyService

#查看帮助
sc create /help
#添加redis到服务中
sc create redis-server binPath= D:/develop/Redis5/redis-server.exe

mklink 快捷方式

创建快捷方式

C:\>mklink /?
创建符号链接。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      创建目录符号链接。默认为文件
                符号链接。
        /H      创建硬链接,而不是符号链接。
        /J      创建目录联接。
        Link    指定新的符号链接名称。
        Target  指定新链接引用的路径
                (相对或绝对)。

特殊字符的目录

chdir "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\"

切换到其他驱动器目录

cd /d D:\apps

删除目录

rmdir /s /q D:\apps

s 表示删除目录以及目录内所有的内容

q 表示静默模式

复制目录

xcopy /e /i D:\apps\DingDing D:\develop\DingDing2

e 表示复制目录和子目录,包括空目录

i 表示如果目标不存在,且复制了多个文件,则假定目标是目录

新窗口执行命令

:: 下面这个命令执行时,会有一个新窗口一闪而逝
start cmd /c echo '这是一个新窗口'
:: 让新窗口不消失
start cmd /k echo '这是一个新窗口'
:: 在新窗口执行了2个或n个命令
start cmd /c "echo '这是一个新窗口'&echo 'Hello New Cmd'"

关闭程序

taskkill /f /t /im qq.exe

条件执行

基于 && 和 || 本身的逻辑运算特性

&& 希望连接的所有语句都为真。所以当前一个语句为真,就会接着会执行下一语句;如果前一个语句为假,则不会继续执行。

|| 只要求连接的所有语句有一条是真的就行。所以当前一个语句为假,才会继续执行下一条语句;如果前一条语句为真,则不会继续执行。

#进入apps目录成功后,再进入 DingDing 目录
cd apps && cd DingDing
## 进入apps目录失败,则进入develop目录
cd apps || cd develop

#进入apps目录成功,则进入DingDing目录,否则进入develp目录 
cd apps && cd DingDing || cd develop 

逻辑尽量不要搞得太复杂,以免影响代码的阅读性!!!