当前位置: 首页 > news >正文

windows中命令行批处理脚本学习

目录

    • 一 基础知识
    • 二 常见命令
      • 1. 输出 echo
      • 2. 注释 rem .... %...% :: goto if (1==0) ()
      • 3. 变量 set
      • 4. 获取参数 %数字 %*
      • 5. 退出 exit
      • 6. 复制 copy
      • 7.读取输出文件内容 type
      • 8. 帮助 命令xxx /?
      • 9.等待当前命令运行结束后,才执行下一条命令 call
      • 10. 修改字体编码 chcp
      • 11. 特殊变量
    • 三 结构
      • 1. 顺序结构
      • 2. 分支结构
      • 3. 循环结构

一 基础知识

  1. windows中命令的关键字大小写不敏感
  2. 批处理解释器对赋值语法的要求是非常严格的,必须是set 变量名=值的格式,等号左右没有空格
  3. 命令的参数使用正斜杠 即 /

二 常见命令

1. 输出 echo

  1. echo xxx 类似c语言的printf(“xxx”)
  2. echo off 在批处理脚本中,默认命令都会回显展示, 如果不想回显命令本身,就使用该命令关掉。
  3. @xxxxxxx xxxxxx这条命令不回显,所以常见的用法是,通过@echo off 关闭整个脚本的命令回显。
  4. 输出写入到文件,
    echo xxxx > 1.txt 覆盖,
    echo xxxx >> 1.txt 追加

2. 注释 rem … %…% :: goto if (1==0) ()

参照大神精辟总结
做简要摘录:
在这里插入图片描述

3. 变量 set

  1. 通过命令set来定义变量, 通过%变量名%来调用变量
set var1=hello
echo %var1%
  1. 在 Windows 批处理脚本中,所有变量都被视为字符串,即使你存储的是数字。你可以进行数字运算,但默认情况下,系统把变量看作文本处理。因此,当你定义变量时,不用考虑类型问题。如果你想要进行数字运算,可以使用 set /a,系统会自动将变量视为整数进行处理:/a 表示“arithmetic”(算术)
set /a var5=5
set /a var6=%var5%+1
echo %var6%

注意var6也必须定义为数字类型的变量,否则得到的是5+1这个文本

  1. 如果你想要定义空字符串,你可以简单地这样做:set var2=
  2. 获取用户输入。set /p 是批处理脚本中用于从用户输入中获取值的命令。它的作用是定义变量并赋值为用户的输入。它允许脚本暂停执行,等待用户在命令行输入数据,然后将输入内容存储在一个变量中。
set /p 变量名=提示信息
  1. 特殊变量
    %cd%:这是一个特殊的环境变量,表示当前工作目录(current directory)。

4. 获取参数 %数字 %*

参照此篇博客
以下做摘录

  1. 获取哪几个变量
    在这里插入图片描述

  2. 获取变量中的哪一部分
    在这里插入图片描述
    这些路径修饰符(如 ~n, ~x, ~f 等)只能用于命令行参数(如 %1, %2 等),不能直接用于普通变量(如通过 set 命令定义的变量).
    理解: f对应full path n对应name x对应extension

@echo off
echo 0对应的变量 %0
echo 1对应的变量 %1
echo f修饰的变量 完整路径 %~f1
echo n修饰的变量 文件名 %~n1
echo x修饰的变量 扩展名 %~x1

结果
在这里插入图片描述

5. 退出 exit

exit 0   % 关闭命令行窗口,返回成功状态码 %
exit 1   % 关闭命令行窗口,返回错误状态码 %

参数/b可以保留命令行窗口, 只是停止当前批处理脚本

6. 复制 copy

复制的路径中如果可能带有特殊字符,加上双引号。如果复制后的文件,文件名不同,直接体现。 copy a.txt b.txt将文件a复制为文件b

copy "%outpath%%basename%_2_evac.fed" "%outpath%%basename%_3_evac.fed"

7.读取输出文件内容 type

type 1.txt

8. 帮助 命令xxx /?

copy /?

9.等待当前命令运行结束后,才执行下一条命令 call

call xxx命令

10. 修改字体编码 chcp

chcp 是 Change Code Page 的缩写,用于在命令行环境中更改当前的代码页(即字符编码)。通过 chcp 命令,用户可以设置控制台使用的字符编码,以便正确显示不同语言或字符集的文本。

例如,执行 chcp 65001可以将命令行的字符编码更改为 UTF-8,从而支持多语言字符的显示

11. 特殊变量

  1. errorlevel
    errorlevel 表示上一条命令是否发生错误,如果错误,其值>=1, 否则==0, 这个变量很特殊
    可以直接使用如下判断
if errorlevel 1 (echo 这会执行
)

表示if %errorlevel% >=1


三 结构

1. 顺序结构

较为简单,不再赘述

2. 分支结构

分支结构参照此篇
以下做一些关键摘录.

  1. 语法结构
    在这里插入图片描述
    在这里插入图片描述

理解: 括号挨着表达式,计算机搞不清楚括号后的内容是否属于表达式的一部分.
else if前边可以不加空格,因为计算机已经知道右括号 ) 是执行代码块的结尾了.

if condition (rem 执行代码块
) else if condition (rem 执行代码块
) else (rem 执行代码块
)

对比一下c语言

if(condition){//执行代码块
}
else if(condition){//执行代码块
}
else{//执行代码块
}
  1. 常见用法

判断路径文件是否存在

if exist %filepath% (echo 路径%filepath%存在
) else (echo 路径%filepath%不存在
)

判断变量是否定义, 注意此时变量不加%

set /p filepath=请输入:
if defined filepath (echo filepath存在
)if not defined filepath (echo filepath不存在
)

判断上条指令是否执行成功.

call  C:\Users\Administrator\Desktop\printf.batif %errorlevel%  == 0 (echo 前条执行成功
) else (echo 前条执行失败
)

3. 循环结构

参考此篇博客
下文做简要摘录。

  1. 基本格式
    在这里插入图片描述
for %%a in (ele1 ele2 ele3) do (echo %%a
)
for %%a in (1,2,3) do (echo %%a
)
  1. 特殊用法
    输出当前文件夹下的文件,只有文件
for %%i in (./*) do (echo %%i)
  1. 指令参数
    /l 遍历数字序列
    在这里插入图片描述

欢迎交流指正ヾ(≧▽≦*)o, 之后继续补充

相关文章:

windows中命令行批处理脚本学习

目录 一 基础知识二 常见命令1. 输出 echo2. 注释 rem .... %...% :: goto if (10) ()3. 变量 set4. 获取参数 %数字 %*5. 退出 exit6. 复制 copy7.读取输出文件内容 type8. 帮助 命令xxx /?9.等待当前命令运行结束后,才执行下一条命令 call10. 修改字体编码 chcp11. 特殊变量…...

版本工具报错:Error Unity Version Control

NotConfiguredClientException: Unity VCS client is not correctly configured for the current user:Client config file....

ECharts饼图-饼图标签对齐,附视频讲解与代码下载

一、图表效果预览 引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个饼图图表,通过该图表我们可以直观地展示和分析数据。此外&#…...

Python实现基于WebSocket的stomp协议调试助手工具分享

stomp协议很简单,但是搜遍网络竟没找到一款合适的客户端工具。大多数提供的都是客户端库的使用。可能是太简单了吧!可是即便这样,假如有一可视化的工具,将方便的对stomp协议进行抓包调试。网上类似MQTT的客户端工具有很多&#xf…...

《语音识别方案选型研究》

《语音识别方案选型研究》 一、引言二、语音识别技术概述(一)语音识别的基本原理(二)语音识别技术的发展历程 三、语音识别方案的分类(一)基于云端的语音识别方案(二)基于本地的语音…...

解决关于HTML+JS + Servlet 实现前后端请求Session不一致的问题

1、前后端不分离情况 在处理session过程中,如果前后端项目在一个容器中,session是可以被获取的。例如如下项目结构: 结构 后端的代码是基本的设置值、获取值、销毁值的内容: 运行结果 由此可见,在前后统一的项目中&a…...

ECharts饼图-饼图34,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个饼图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供详…...

如何实现安川MP3300运动控制器与西门子1200系列PLC进行ModbusTCP通讯

在工业自动化中,实现不同品牌、不同型号设备之间的通讯是确保生产流程顺畅、高效运行的关键。本文详细介绍了安川MP3300运动控制器与西门子1200系列PLC进行ModbusTCP通讯的具体方法。 一.软硬件需求 1.一台安川MP3300CPU301,其IP地址是192.…...

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中,实现添加列表项,最后一项自动显示在可视区域范围!! 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…...

深入理解MVP架构模式

引言 MVP(Model-View-Presenter,模型-视图-提供者)是一种广泛应用于软件开发中的架构模式,是经典MVC(Model-View-Controller)的变种。在传统的MVC模式中,Model和View之间存在直接的依赖和数据交…...

Java面试题七

一、Java中的集合框架是如何组织的?列举几个常用的集合类。 Java中的集合框架是一个设计用来存储和操作对象集合的统一架构。它主要由两大接口派生出来:Collection和Map。这两个接口及其子接口和实现类共同构成了Java集合框架的主体。 集合框架的组织结…...

linux网络编程3——http服务器的实现和性能测试

http服务器的实现 本文使用上一篇博文实现的epollreactor百万并发的服务器实现了一个使用http协议和WebSocket协议的WebServer。 完整代码请看我的github项目 1. 水平触发(Level Trigger)与边沿触发(Edge Trigger) 1.1 水平触发 水平触发是一种状态驱动机制。当文件描述符&a…...

Docker部署Kamailio,并使用LinPhone实现网络通话

前提条件 准备一个路由器,一个服务器,两个终端设备(手机或电脑) docker部署安装 我使用的是windows系统,docker desktop 先启动Docker desktop打开cmd,输入docker命令docker run --name kamailio --rm…...

JAVA-石头迷阵小游戏

采用企业式项目结构,接下来我将分享全部代码和结构,希望大家点点关注! 这是我的结构。首先使用IDE创建一个Module,命名stone-maze,接着把自带src下的main方法删除,接着在src下创建包,包名为com.wmuj,接着创建APP类代码如下: package com.wmuj;public class App {publ…...

鸿蒙--进度条通知

主要介绍如何使用通知能力和基础组件,实现模拟下载文件,发送通知的案例。 效果 代码结构 ├──entry/src/main/ets // 代码区 │ ├──common │ │ ├──constants │ │ │ └──CommonConstants.ets // 公共常量类 │ │ └──utils │ │ ├──Logger.ets //…...

搜维尔科技:varjo xr-4开箱测评,工业用途头显,一流视觉保真度

varjo xr-4开箱测评,工业用途头显,一流视觉保真度 搜维尔科技:varjo xr-4开箱测评,工业用途头显,一流视觉保真度...

mysql数据量分库分表

一、分库分表参考阈值 分库分表是解决大规模数据和高并发访问问题的常用策略。虽然没有绝对的阈值来决定何时进行分库分表,但以下是一些参考阈值和考虑因素,可以帮助你做出决策: 1.1 数据量阈值 单表数据行数:当单表的数据行数…...

Vite创建Vue3项目以及Vue3相关基础知识

1.创建Vue3项目 1.运行创建项目命令 # 使用 npm npm create vitelatest2、填写项目名称 3、选择前端框架 4、选择语法类型 5、按提示运行代码 不出意外的话,运行之后应该会出现 下边这个页面 6.延伸学习:对比webpack和vite(这个是面试必考…...

Elasticsearch封装公共索引增删改查

什么是索引? 定义:索引是 Elasticsearch 中用于存储数据的逻辑命名空间。它由多个文档组成,每个文档是一个 JSON 格式的结构化数据对应关系:在关系数据库中,索引类似于表;而在 Elasticsearch 中&#xff0…...

Python异常检测:Isolation Forest与局部异常因子(LOF)详解

这里写目录标题 Python异常检测:Isolation Forest与局部异常因子(LOF)详解引言一、异常检测的基本原理1.1 什么是异常检测?1.2 异常检测的应用场景 二、Isolation Forest2.1 Isolation Forest的原理2.1.1 算法步骤 2.2 Python实现…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...