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.xdnf.cn/news/139467.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ps丢失d3dcompiler_47.dll怎么办,这四个方法都能解决

在当今的信息化社会,电脑已经成为我们生活和工作中不可或缺的一部分。然而,随着软件技术的不断发展,电脑在使用过程中也难免会遇到各种问题。其中,缺失d3dcompiler_47.dll文件是一个常见的问题。本文将为大家介绍如何修复电脑出现…

git:二、git的本地配置+工作区域和文件状态+git add/commit/log +git reset回退版本

git的使用方式 命令行(最常用)图形化界面IDE插件/拓展(次常用) git的本地/系统配置 之前的文章提到过git的全局配置。如下: git config --global user.name "ss" git config --global user.email "…

计算机毕业设计 基于SSM+Vue的物资存储系统(以消防物资为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

please choose a certificate and try again.(-5)报错怎么解决

the server you want to connect to requests identification,please choose a certificate and try again.(-5)

Centos7部署单机版MongoDB

目录 Centos7部署单机版MongoDBMongoDB介绍数据模型索引分布式高可用性查询语言驱动和社区用途缺点 下载并解压安装包创建相关文件夹和文件编辑mongod.conf文件启动mongodb创建管理员用户终止MongoDB服务配置自启动服务关闭SELinux编辑自启动服务文件mongodb服务命令 Centos7部…

坚鹏:中国邮政储蓄银行金融科技前沿技术发展与应用场景第4期

中国邮政储蓄银行金融科技前沿技术发展与应用场景第4期培训圆满结束 中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力,是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市,2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点…

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…

【一】Spring Cloud 系列简介

Spring Cloud 系列简介 简介:从单体架构到分布式架构,再到微服务架构,一路经历走来spring框架也一直在与时俱进,回顾下来感觉做Java开发就是基于spring开发,spring也一路发展出了spring boot,在此基础上发…

七天学会C语言-第七天(结构体)

1.定义结构体 例 1&#xff1a;把一个学生的信息(包括学号、姓名、性别、住址等 4 项信息) 放在一个结构体变量中&#xff0c;然后输出这个学生的信息。 #include <stdio.h>struct Student {int student_id;char name[30];char gender;char address[60]; };int main() …

flex布局与float布局

float布局 俩栏 三栏 flex布局

力扣刷题-数组-螺旋矩阵

模拟过程&#xff0c;但却十分考察对代码的掌控能力。 重点&#xff1a;循环不变量原则&#xff01; 第一条原则&#xff1a; 模拟顺时针画矩阵的过程&#xff1a; 填充上行从左到右填充右列从上到下填充下行从右到左填充左列从下到上 由外向内一圈一圈这么画下去。 第二条原…

基于微信小程序的加油站服务管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文参考源码获取 前言 &#x1f497;博主介绍&#x…

八大排序(四)--------直接插入排序

本专栏内容为&#xff1a;八大排序汇总 通过本专栏的深入学习&#xff0c;你可以了解并掌握八大排序以及相关的排序算法。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;八大排序汇总 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库…

1.(vue3.x+vite)封装组件

前端技术社区总目录(订阅之前请先查看该博客) 关联博客 2.(vue3.x+vite)组件注册并调用 1:创建组件目录package,并创建相关工程结构 2:编写组件内容(index.vue) 3:添加注册组件方法(index.js) 4:添加路由

平滑加权轮询算法java实现

实现代码 /*** 功能描述: 平滑加权轮询算法** author zhang pu* date 11:46 2023/9/22*/public static void smoothnessWeightPollLoadBalance() {Server serverA new Server("127.0.0.1", 5, 0);Server serverB new Server("127.0.0.2", 3, 0);Server s…

深度学习从入门到入土

1. 数据操作 N维数组样例 N维数组是机器学习和神经网络的主要数据结构 0-d 一个类别&#xff1a; 1.0 1-d 一个特征向量(一维矩阵)&#xff1a;[1.0, 2.7, 3.4] 2-d 一个样本-特征矩阵-(二维矩阵) 3-d RGB图片 &#xff08;宽x高x通道&#xff09;- 三维数组 4-d 一个RGB…

React 全栈体系(十三)

第七章 redux 五、redux 异步编程 1. 理解 redux 默认是不能进行异步处理的,某些时候应用中需要在 redux 中执行异步任务(ajax, 定时器) 2. 使用异步中间件 npm install --save redux-thunk 3. 代码 - 异步 action 版 3.1 store /* src/redux/store.js */ /*** 该文件专…

大型集团借力泛微搭建语言汇率时区统一、业务协同的国际化OA系统

国际化、全球化集团&#xff0c;业务遍布全世界&#xff0c;下属公司众多&#xff0c;集团对管理方式和企业文化塑造有着很高的要求。不少大型集团以数字化方式助力全球统一办公&#xff0c;深化企业统一管理。 面对大型集团全球化的管理诉求&#xff0c;数字化办公系统作为集…

Matlab图像处理-模式识别

模式识别 模式识别就是用计算的方法根据样本的特征将样本划分到一定的类别中去。模式识别就是通过计算机用数学技术方法来研究模式的自动处理和判读&#xff0c;把环境与客体统称为“模式”。模式识别以图像处理与计算机视觉、语音语言信息处理、脑网络组、类脑智能等为主要研…

电脑桌面透明便签软件是哪个?

在现代快节奏的工作环境中&#xff0c;许多上班族都希望能够在电脑桌面上方便地记录工作资料、重要事项、工作流程等内容。为了解决这个问题&#xff0c;一款优秀的电脑桌面便签软件是必不可少的。在选择桌面便签软件时&#xff0c;许多用户也希望便签软件能够与电脑桌面壁纸相…