CMD脚本实战教程

要在 Windows 11 上编写一个自定义关机的 CMD 脚本文件,你可以创建一个扩展名为 .bat.cmd 的文本文件,并在其中编写脚本。

一、常用语法

  • rem:注释

  • pause:暂停正在执行的批处理文件,并提示用户按键之后继续执行

    rem cmd脚本文件代码
    pause
    

    image-20230922151349814

  • echo:打印文本

    • echo %os%:显示操作系统名字;
    • echo off:防止将批处理文件中的具体命令输出,只输出执行结果
    • @echo off:在echo off的基础上将命令本身的隐藏

    image-20230922152124282

  • set:设置用户定义或命名的环境变量。暂时存储在内存中,命令执行完就销毁。

    set THE_KING=Elvis
    echo %THE_KING%  
    pause
    

在这里插入图片描述

  • label:使用冒号设置标签,可以作为 goto 的跳转位置

    echo Start
    goto end
    echo I can guarantee this line will not be executed
    :end
    echo End
    pausepause
    

    image-20230922152526004

可以看到 echo I can guarantee this line will not be executed 直接被跳过。

  • if:条件语句

    • exist:测试文件是否存在
    • %接收参数:通过%来传递参数 %1 表示第一个参数,%2表示第二个参数;
    if %1 == start goto start
    if %1 == stop goto stop
    goto invalid:start
    echo Starting appincation
    goto end:stop
    echo Stopping application
    goto end:invalid
    echo Invalid parameter:end
    pause
    

    image-20230922155958313

    这里的%1是接收的执行脚本文件时,后面跟的第一个参数。可以看到上面的案例中,%1其实就是start

  • shift:将接收参数向后移动一位,如%2的值给%1%3的值给%2,这时候可以用%0获取第一个参数。

    //还是上面的代码,改成如下代码,效果是一样的:
    shift
    if %0 == start goto start
    if %0 == stop goto stop
    ...后面代码不变
    
  • call:调用其他脚本文件

同目录下创建cmd2.cmd,代码如下:

echo 这里是cmd2.cmd中的内容

再创建cmdScript.cmd,代码如下:

chcp 65001
call cmd2.cmdpause

双击执行cmdScript.cmd,效果如下:

image-20230922160829535

  • setLocal:批处理脚本中使用,对环境变量的修改只在当前批处理脚本中有效,遇到endLocal命令则在批处理文件末尾的环境变量的值会恢复成原来的值。上面我们使用setlocal enabledelayedexpansion开启变量延迟。

  • start:新开启Windows一个控制台,并指定名字。

    start "My Title" echo hello 
    pause
    

    image-20230922161459378

双击打开脚本文件,脚本会自动打开一个名为My Title的窗口2,并打印hello

  • ==:判断字符串是否相同

    @echo off
    chcp 65001set str1=Hello
    set str2=Worldif "%str1%" == "%str2%" (echo 字符串相同
    ) else (echo 字符串不同
    )REM 不要关闭窗口
    pause
    

    image-20230922165101792

  • equ、gtr、lss:判断数字大小

二、实战案例

1、接收输入

创建cmd脚本文件,代码如下,并双击运行:

@echo off
setlocal enabledelayedexpansionREM 提示用户输入内容
set /p userInput=please input: REM 打印用户输入的内容
echo you input is: !userInput!endlocal
REM 不要关闭窗口
pause

运行后效果如下:

print

需要注意的是,界面上的提示文字you input is:不能使用中文,否则会导致报错:XXX: is not recognized as an internal or external command,operable program or batch file.如果想要使用中文,echo后面跟的变量必须使用%变量名%,不能使用!变量名!

2、自动关机

创建文件 定时关机.cmd,输入以下内容:

@echo off
chcp 65001
setlocal enabledelayedexpansion:start
set /p second=请输入倒计时时长(秒):
set S=!second!if %S% lss 30 (echo 您设定的时间太短,请重新设置(请务必超过30s)goto start
) else (echo.echo 将在 【%S%秒】 后为您关机,请检查以下事项:echo - 文件+代码是否都已保存和提交?echo - 任务和周报是否都已填报?echo.goto sure
):sure
set /p sure=确定关机[y/n]:
echo !sure!
if "!sure!"=="y" (goto launch
)
goto end:launch
timeout /t %S%
shutdown /s /f /t 0
goto end:end
endlocalREM 不要关闭窗口
pause

这个脚本首先关闭命令行窗口的回显(@echo off),然后显示一条消息,等待 30 秒(可以根据需要调整等待时间),最后执行关机命令。

  • chcp 65001:设置中文字符编码(防止出现中文乱码)

  • shutdown: shutdown 命令用于执行关机操作。

  • /s: 这个参数告诉 shutdown 命令执行关机操作。

  • /f: 这个参数强制关闭所有应用程序,不等待它们的响应。

  • /t 0: 这个参数表示不要等待,立即执行关机操作。

  • pause:等待用户按任意键后再关闭

  • setlocal enabledelayedexpansion:开启变量延迟

  • endlocal:关闭变量延迟,与setlocal enabledelayedexpansion成对出现

  • echo.:打印空行

执行后自动弹窗cmd窗口(空格键可以终端倒计时):

image-20230922185455773

3、接收数字输入,比较大小

脚本代码如下:

@echo off
chcp 65001
setlocal enabledelayedexpansionset /p n1=num1:
set /p n2=num2:set num1=!n1!
set num2=!n2!if %num1% equ %num2% (echo num1和num2相同
) else if %num1% gtr %num2% (echo num1大于num2
) else if %num1% lss %num2% (echo num1小于num2
)endlocal
REM 不要关闭窗口
pause

image-20230922171049662

4、启动前端项目脚本

@echo off
chcp 65001
setlocal enabledelayedexpansionREM 提示用户输入内容
set /p env=即将启动【产品中心】,请指定环境[test/prod]: REM 打印用户输入的内容
echo Running...:Product-Center[!env!]set ENV=!env!cd /d D:\Codes\Product-Centerif (%ENV%)==() (goto empty
) else if "%ENV%"=="test" (goto env
) else (goto env
):empty
echo 正在启动dev环境...
pnpm start
goto end:env
echo 正在启动%ENV%环境...
pnpm start:%ENV%
goto end:end
endlocal
REM 不要关闭窗口
pause
  • set /p env=即将启动【产品中心】,请指定环境[test/prod]::接收一个输入,定义接收变量env
  • set ENV=!env!:将输入赋值给ENV变量
  • cd /d D:\Codes\Product-Center:切换到D盘,并进入指定项目目录
  • if... else... if else... :判断要启动哪个环境
  • goto:跳转到指定代码位。
  • if (%ENV%)==():判断输入文字是否为空,必须要这种方式,==实测无效。

执行效果如下:

image-20230922173055600

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/138725.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数模研赛思路】2023华为杯研究生数学建模竞赛选题建议及CDEF题思路

大家好呀,全国研究生数学建模竞赛今天早上开赛啦,在这里先带来初步的选题建议及思路。 目前团队正在写E题完整论文,此外C已经完成了第一问代码及结果,本文章只是一个比较粗略的文字版思路,更加详细的半小时视频讲解版…

Windows AD 组策略 安全加固

一、密码策略 (1)Enforce password history(强制密码历史) (2)aximum password age(密码最长使用期限) (3)Minimum password age(密码最短使用期限…

基于微信小程序的校园生活管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境学生微信端的主要功能有:管理员的主要功能有:具体实现截图视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝1…

浅谈终端安全接入

前言: 随着网络的发展,现代企业大多都会部署企业的有线网络与无线网络,在传统的企业网内,随着越来越多的终端设备接入到公司网络,管理人员控制和审计外部用户接入的企业办公网的难度和工作量也越来越大。而如果允许外…

图的十字链表存储结构

1.其实就是邻接表和逆邻接表的结合,说明白点,就是用箭头表示出弧头,弧尾,以及他们之间的关系 2.顶点结构 3.弧结构 3.这样根据上面的结点十字链表结构就很好分析了

东莞建筑模板批发供应商

东莞作为中国著名的制造业城市,建筑业一直是该地区的重要支柱产业。在建筑施工中,建筑模板是不可或缺的关键材料之一。为满足市场需求,东莞拥有众多专业的建筑模板批发供应商,他们以丰富的经验、优质的产品和专业的服务赢得了客户…

Python练习之列表

1、输入一个包含若干整数的列表,输出新列表,要求新列表中的所有元素来自于输入的列表,并且降序排列。 ainput("输入列表元素:") itema.split(" ") list[eval(x) for x in item] list.sort(keyNone,reverseTr…

人脸修复祛马赛克算法CodeFormer——C++与Python模型部署

一、人脸修复算法 1.算法简介 CodeFormer是一种基于AI技术深度学习的人脸复原模型,由南洋理工大学和商汤科技联合研究中心联合开发,它能够接收模糊或马赛克图像作为输入,并生成更清晰的原始图像。算法源码地址:https://github.c…

2023-2024年最新大数据学习路线

文章目录 2023-2024年最新大数据学习路线大数据开发入门*01*阶段案例实战 大数据核心基础*02*阶段案例实战 千亿级数仓技术*03*阶段项目实战 PB级内存计算04阶段项目实战 亚秒级实时计算*05*阶段项目实战 大厂面试*06* 2023-2024年最新大数据学习路线 新路线图在Spark一章不再…

软考复习 -- 计算机网络

1 网络互连设备 物理层:中继器和集线器(多路中继器)数据链路层:网桥和交换机(多端口网桥)网络层:路由器应用层:网关 2 广播域和冲突域 3 协议簇 4 网际层协议 4 TCP和UDP 4.1 TC…

打开常用软件出现msvcp140.dll丢失的解决方法,msvcp140.dll是什么东西?

在我们使用计算机的过程中,有时候会遇到一些错误提示,其中“找不到 msvcp140.dll”就是比较常见的一种。那么,msvcp140.dll 到底是什么呢?为什么会出现找不到的情况?丢失 msvcp140.dll 又会对计算机产生什么影响&#…

腾讯Behaviac Designer 和Unity连调行为树

1. 克隆源码 https://github.com/Tencent/behaviac/ 2. 编译生成BehaviacDesigner.exe 3. 找到并打开BehaviacDesigner.exe(先不急着填弹出的路径workspace 设置框) 4. 新建一个Unity 空工程,并在此处下载behaviac unitypackage 5. Unity中…

ATFX汇市:为什么英央行维持利率不变,而不是加息25基点?

ATFX汇市:9月21日,英国央行9月利率决议宣布,维持5.25%的基准利率不变,此前市场预期英央行将会加息25基点。消息公布后,GBPUSD五分钟内从最高点1.2300下跌至1.2239,跌幅61基点。英国央行会议纪要中提到&…

5.数学公式中-符号加粗

在 LaTeX 中,\boldsymbol 命令用于将数学公式中的符号或字母加粗显示,以突出显示它们或强调它们的重要性。通常,这个命令用于加粗矢量、矩阵、符号等。 要使用 \boldsymbol,您需要在数学模式中(例如,在 \[…

技术分享| anyRTC音视频混流技术解析

一,简介 在视频通讯场景中,比如会议、直播等经常能看到图像合成的场景。图像合成是在指定的一块画面区域,在这个区域内,按画面的位置(坐标)布局,将区域中的每个视频画面的像素混合计算成一个像素(RGB&…

Haproxy负载均衡集群 超详细 (附部署实例)

Haproxy 一、Web集群调度器1.1 常用的Web集群调度器1.2 常用集群调度器的优缺点(LVS ,Nginx,Haproxy)1.2.1 Nginx1.2.2 LVS1.2.3 Haproxy 1.3 LVS、Nginx、Haproxy的区别 二、Haproxy2.1 简介2.2 Haproxy的主要特性2.3 Haproxy应用分析2.4 Haproxy的调度算法(负载均…

分享一个清理工具栏和插件的小工具

现在只要是经常用SolidWorks的,肯定是多多少少知道一些插件,有时候安装了很多个插件的时候,工具栏可能会乱串,而且还有可能出现插件删除了,但插件里面还能看到。 这其中的原因很简单,基本上都是反注册或者…

工业物联网大数据解决方案:排水设备远程监控和大数据统计系统

一、项目背景 给排水系统,作为城市的基础设施建设,是居民生产生活的必要保障。由于给排水系统通常站点零散分布,运维管理涉及的区域广泛,水位、流量、机泵运行等运行参数的测报,目前采取人工测量的,上令下…

html学习综合案例1

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个人简介</title> </head> <body>…

【C++】STL之适配器---用deque实现栈和队列

目录 前言 一、deque 1、deque 的原理介绍 2、deque 的底层结构 3、deque 的迭代器 4、deque 的优缺点 4.1、优点 4.2、缺点 二、stack 的介绍和使用 1、stack 的介绍 2、stack 的使用 3、stack 的模拟实现 三、queue 的介绍和使用 1、queue 的介绍 2、queue 的使用 3、qu…