CMD脚本实战教程

news2024/11/20 3:37:21

要在 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
    pause
    
    pause
    

    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.cmd

pause

双击执行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 65001
    
    set str1=Hello
    set str2=World
    
    if "%str1%" == "%str2%" (
        echo 字符串相同
    ) else (
        echo 字符串不同
    )
    
    REM 不要关闭窗口
    pause
    

    image-20230922165101792

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

二、实战案例

1、接收输入

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

@echo off
setlocal enabledelayedexpansion

REM 提示用户输入内容
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
endlocal

REM 不要关闭窗口
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 enabledelayedexpansion

set /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 enabledelayedexpansion

REM 提示用户输入内容
set /p env=即将启动【产品中心】,请指定环境[test/prod]: 

REM 打印用户输入的内容
echo Running...:Product-Center[!env!]

set ENV=!env!

cd /d D:\Codes\Product-Center

if (%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.coloradmin.cn/o/1031924.html

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

相关文章

VisualStudio2017社区版安装完毕后,找不到stdio.h等头文件的解决方案

安装完VisualStudio2017社区版后&#xff0c;创建一个C的测试项目&#xff0c;好使&#xff0c;一时心血来潮创建了纯C的项目&#xff0c;结果死活提示找不到头文件“stdio.h”&#xff0c;测试代码如下&#xff1a; #include<stdio.h>int main() {printf("Hello w…

超详细 | CISP-信息安全专业认证考前攻略

近年来&#xff0c;中央关于信息安全的政策不断加码&#xff0c;网络安全已上升到国家战略&#xff0c;安全专业人才缺口以每年1.5万人的速度递增。作为信息安全从业人员&#xff0c;持证上岗已是大势所趋。今天&#xff0c;重点聊一下信息安全国内第一认证CISP&#xff01; 注…

关于表单快速开发低代码技术平台的内容介绍

运用什么样的表单快速开发软件平台可以实现高效率创收&#xff1f;随着科技的进步和飞速发展&#xff0c;专业的低代码技术平台已经走入了很多企业的办公职场中&#xff0c;它们灵活、轻量级、优质、高效、易维护等优势特点&#xff0c;可以高效助力广大企业提质增效&#xff0…

php代码审计篇bluecms代码审计

文章目录 Seay自动审计源码分析/ad_js.php文件sql注入分析/include/common.fun.php注入分析/admin/login.php存在宽字节注入分析/admin/nav.php SQL注入分析前台注册界面存在存储型xss Seay自动审计 使用seay进行自动代码审计 源码分析 /ad_js.php文件sql注入分析 查看执行…

k8s-部署

1.k8s 集群与部署 更改所有主机名字和解析 k8s1 192.168.25.11 reg.westos.org,habbor 仓库 k8s2 192.168.25.12 master&#xff0c;k8s 集群控制节点 k8s3 192.168.25.13 node&#xff0c;k8s 集群工作节点 k8s4 192.168.25.14 node&#xff0c;k8s 集群工作节点 所有节…

不再跳票Fedora 26 正式发布!

经过延期和跳票&#xff0c;Fedora 26终于和大家见面了&#xff0c;下面是Fedora 项目负责人Matthew Miller感谢信 大家好&#xff0c;我很高兴地宣布&#xff0c;从即刻起 Fedora 26 正式可用了。你可以从下面了解到具体信息&#xff0c;也可以马上开始下载&#xff1a; •下载…

漫画工厂ai-comic-factory 文字2漫画

demo入口https://huggingface.co/spaces/jbilcke-hf/ai-comic-factory 最终展示 大概流程&#xff1a; 选漫画分格输入需要将啥故事X X 通过Llama2 70B 生成具体的每个分割图的描述YY 通过SDXL 生成图 LLM: llama-2 is used to generate the captions of 4 comic panels (pro…

【从0学习Solidity】 6. 引用类型, array, struct

【从0学习Solidity】 6. 引用类型, array, struct 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&…

软考证书可以评职称吗?怎么评?

软考是可以帮助评职称的&#xff0c;取得软考证书&#xff0c;就具备评职称的相应资格。 通过软考获得证书的人员&#xff0c;表明其已具备从事相应专业岗位工作的水平和能力&#xff0c;用人单位可根据工作需要从获得证书的人员中择优聘任相应专业技术职务&#xff08;技术员…

Python函数绘图与高等代数互融实例(三):设置X|Y轴文本标签|网格线

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互融实例(二):闪点函数 Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线 Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域 一: 设置X|Y轴文本标签 import num…

Python在工业自动化领域的应用详解

概要 当我们开始讨论在工业自动化应用中使用哪种编程语言时&#xff0c;通常我们会首先谈论IEC 61131-3标准中用于可编程逻辑控制器&#xff08;PLC&#xff09;的语言&#xff0c;比如经典的梯形图&#xff08;LD&#xff09;或结构化文本&#xff08;ST&#xff09;。对于机器…

OceanBase Docker体验

实验一&#xff1a;OceanBase Docker体验 通过 OceanBase Docker 容器&#xff0c;快速的体验 OceanBase 的 自动化部署过程&#xff0c;以及了解 OceanBase 集群安装成功后的目录特点和使用方法。 Docker镜像 实验环境 实验环境说明 1台OCP 5台OBSERVER aarch64 Kylin Lin…

【效率提升】maven 转 gradle 实战 | 京东云技术团队

一、灵魂三问 1、gradle 是什么&#xff1f; 一个打包工具&#xff0c; 是一个开源构建自动化工具&#xff0c;足够灵活&#xff0c;可以构建几乎任何类型的软件&#xff0c;高性能、可扩展、能洞察等。其中洞察&#xff0c;可以用于分析构建过程中数据&#xff0c;提供分析参…

龙讯LONTIUM LT8712EXI 国产芯片

1.描述 该LT8712EXI是一种高性能的类型-C/DP1.2HDMI2.0/VGA转换器&#xff0c;旨在连接一个USB类型C源或DP1.2源到一个VGA接收器&#xff0c;并高达两个HDMI2.0接收器同时。 该LT8712EXI集成了一个DP1.2兼容接收器&#xff08;MST能力&#xff09;&#xff0c;一个高速三通道…

浅谈SpringMVC的请求流程

目录标题 浅谈SpringMVC的请求流程SpringMVC的介绍SpringMVC的逻辑概念运行图解知识总结 浅谈SpringMVC的请求流程 对于SpringMVC而言重点是了解它的底层运行逻辑&#xff0c;从而可以根据其逻辑来进行实际业务的操作或者是利用原理增强业务的功能性&#xff0c;最终达到项目预…

免备案海外服务器有什么好处?

介绍一&#xff1a;了解海外服务器免备案的优点 免备案海外服务器是指在国外搭建网站服务器而不是在国内备案&#xff0c;这种模式可以带来一定的便利 。首先&#xff0c;海外服务器免备案可以使网站更加稳定&#xff0c;因为国外网络环境更加稳定&#xff0c;大多数国外服务 器…

并查集题目

并查集是一种十分常用并且好用的数据结构 并查集可以动态维护若干个不重叠的集合&#xff0c;支持合并与查询操作&#xff0c;是一种树形的数据结构 并查集的基础应用 村村通 对于这道题我们只需要求连通块的数量&#xff0c;然后将这几个联通快看成点&#xff0c;我们可以知…

【算法练习Day3】 移除链表元素设计链表反转链表

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 移除链表元素其他问题 设…

【LeetCode热题100】--53.最大子数组和

53.最大子数组和 使用动态规划&#xff1a; 状态定义&#xff1a;设动态规划列表dp&#xff0c;dp[i]代表以元素nums[i]为结尾的连续子数组最大和 转移方程&#xff1a;若dp[i-1]≤0,说明dp[i-1]对dp[i]产生负贡献&#xff0c;即dp[i-1]nums[i]还不如nums[i]本身大 初始状态&…

基于Python+Pygame实现一个俄罗斯方块小游戏【完整代码】

俄罗斯方块&#xff0c;一款起源于上世纪80年代的经典电子游戏&#xff0c;凭借简单的规则和独特的魅力&#xff0c;一跃成为全球家喻户晓的经典。你知道其实只需要一些基础的编程知识&#xff0c;就可以自己实现它吗&#xff1f;今天&#xff0c;我们将使用Python的Pygame库&a…