我的编程空间,编程开发者的网络收藏夹
学习永远不晚

教你编写bat脚本Windows批处理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

教你编写bat脚本Windows批处理

批处理脚本文件具有特殊的扩展名BAT或CMD,这种类型的文件通过称为**命令解释器(cmd.exe)**的系统文件提供的接口(shell)来识别和执行。

常见用途

  • 为不同的目的设置服务器
  • 自动管理活动和日志,如删除不需要的文件或日志文件
  • 自动将应用程序从一个环境部署到另一个环境。
  • 立即在各种机器上安装程序。

bat命令速查

命令备注
VER显示正在使用的MS-DOS的版本
ASSOC这是将扩展名与文件类型(FTYPE)相关联的批处理命令,显示现有关联或删除关联
cd更改不同的目录,或显示当前目录
CLS清屏
COPY文件复制
DEL删除文件
DIR列出目录内容
DATE系统日期
ECHO显示消息,或打开、关闭命令回显
EXIT退出DOS控制台
MD创建目录
MOVE移动文件或目录
PATH显示或设置路径变量
PAUSE等待输入
PROMPT用于更改或重置cmd.exe提示符
RD删除目录(需为空)
REN重命名文件和目录
REM注释
START在新窗口中启动程序,或打开文档
TIME设置或显示时间
TYPE将文件或文件的内容打印到输出中
VOL显示卷标
ATTRIB显示或设置当前目录中的文件的属性
CHKDSK检查磁盘是否有问题
CHOICE为用户提供了一个选项列表
CMD调用另一个命令提示符实例
COMP根据文件大小比较2个文件
CONVERT将卷从FAT16或FAT32文件系统转换为NTFS文件系统
DRIVERQUERY显示所有已安装的设备驱动程序及其属性
EXPAND从压缩的.cab压缩文件中提取文件
FIND在文件或输入中搜索字符串,输出匹配的行
FORMAT将磁盘格式化为使用Windows支持的文件系统(如FAT,FAT32或NTFS),从而覆盖磁盘的先前内容
HELP显示Windows提供的命令的列表
IPCONFIG显示Windows IP配置。显示连接的配置和连接的名称
LABEL添加,设置或删除磁盘标签
MORE一次显示一个或多个文件的内容
NET根据使用的命令提供各种网络服务
PING通过网络将ICMP/IP “回显”发送到指定的地址的包
SHUTDOWN关闭计算机,或者注销当前用户
SORT从源文件获取输入,并按字母顺序排序其内容,从A到Z或从Z到A。它将在控制台上打印输出
SUBST将驱动器号分配给本地文件夹,显示当前分配或删除分配
SYSTEMINFO该批处理命令显示计算机及其操作系统的配置
TASKKILL该批处理命令结束一个或多个任务
TASKLIST列出任务,包括任务名称和进程标识(PID)
XCOPY以更高级的方式复制文件和目录
TREE将当前目录的所有子目录的树显示为递归或深度的任何级别
FC列出两个文件之间的实际差异
DISKPART显示和配置磁盘分区的属性
TITLE该批处理命令设置控制台窗口中显示的标题
SET显示当前系统上的环境变量列表

常用参数

/L: for循环移动范围的/L参数用于迭代数组
/A:数值

echo

@echo off
  • “echo off” :关闭脚本的显示(不显示命令)。
  • “@” :使命令也适用于自己。

注释

Rem

Rem Remarks

程序执行时忽略Rem关键字之后的任何内容。

使用::声明

:: Remarks

dir :获取目录内容

> :将输出重定向到文件

@echo off 
Rem This is for listing down all the files in the directory Program files 
dir "C:\Program Files" > C:\lists.txt 
echo "The program has completed"

变量

命令行参数

rem Test.bat
@echo off 
echo %1 
echo %2 
echo %3

运行方式

Test.bat 1 2 3

set命令

set /A variable-name=value

  • variable-name: 变量的名称
  • value:变量值。
  • /A:如果该值本质上是数值,则使用此开关。

字符串

@echo off 
set message=Hello World 
echo %message%
rem 变量需要包含在%符号中显示

数值

@echo off 
SET /A a=5 
SET /A b=10 
SET /A c=%a% + %b% 
echo %c%

局部变量 vs 全局变量

  • 默认情况下为全局变量。
  • 调用SETLOCAL命令,使变量局部在脚本的范围内。
  • 在调用SETLOCAL之后,任何变量赋值在调用ENDLOCAL,调用EXIT,或者当执行到达脚本中的文件结尾(EOF)时都会返回。
@echo off 
set globalvar=5
SETLOCAL
set var=13145
set /A var=%var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

环境变量输出

@echo off 
echo %JAVA_HOME%

字符串

创建

set message=Hello World

空字符串

SET a= 
if [%a%]==[] echo "String A is empty" 

要检查是否存在空字符串,需要在方括号中包含变量名,并将其与方括号中的值进行比较。

字符串拼接

@echo off 
SET a=Hello 
SET b=World 
SET /A d=50 
SET c=%a% and %b% %d%
echo %c%
:: Hello and World 50

字符串长度

@echo off
set str=Hello World
call :strLen str strlen
echo String is %strlen% characters long
exit /b
:strLen
setlocal enabledelayedexpansion
:strLen_Loop
   if not "!%1:~%len%!"=="" set /A len+=1 & goto :strLen_Loop
(endlocal & set %2=%len%)
goto :eof

转int

使用set变量设置为字符串的变量后,可以使用set变量的**/A开关转换为整数**。

@echo off
set var=13145
set /A var=%var% + 5
echo %var%

截取

%variable:~num_chars_to_skip% 
%variable:~num_chars_to_skip,num_chars_to_keep%

输出:

Helloworld 
Hello

~0,5用于指定需要显示的字符

右对齐

@echo off 
set x=1000 
set y=1 
set y=%y% 
echo %x% 

set y=%y:~-4% 
echo %y%

输出

1000
1

使用~-4选项来表示只想显示字符串y的最后4个字符

删除字符串

@echo off 
set str=Batch scripts is easy. It is really easy. 
echo %str% 
:: 删除is
set str=%str:is=% 
echo %str%
:: Batch scripts easy. It really easy.

删除两端(保留中间)

@echo off 
set str=Batch scripts is easy. It is really easy 
echo %str% 

set str=%str:~1,-1% 
echo %str%
:: atch scripts is easy. It is really eas

删除空格:=

@echo off 
set str=This string    has    a  lot  of spaces 
echo %str% 

set str=%str:=% 
echo %str%
:: Thisstringhasalotofspaces

替换

@echo off 
set str=This message needs changed. 
echo %str% 

set str=%str:needs=has% 
echo %str%
:: This message has changed.

数组

创建

  • 方法一:set
set a[0]=1
  • 方法二:值列表遍历
@echo off 
set list=1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

访问

echo %a[0]%

修改

Set a[3]=4 

迭代

@echo off 
setlocal enabledelayedexpansion 
set topic[0]=comments 
set topic[1]=variables 
set topic[2]=Arrays 
set topic[3]=Decision making 
set topic[4]=Time and date 
set topic[5]=Operators 

for /l %%n in (0,1,5) do ( 
   echo !topic[%%n]! 
)

for循环移动范围的/L参数用于迭代数组

数组长度

@echo off 
set Arr[0]=1 
set Arr[1]=2 
set Arr[2]=3 
set Arr[3]=4 
set "x=0" 
:SymLoop 

if defined Arr[%x%] ( 
   call echo %%Arr[%x%]%% 
   set /a "x+=1"
   GOTO :SymLoop 
)
echo "The length of the array is" %x%

结构体

@echo off 
set len=3 
set obj[0].Name=Joe 
set obj[0].ID=1 
set obj[1].Name=Mark 
set obj[1].ID=2 
set obj[2].Name=Mohan 
set obj[2].ID=3 
set i=0 
:loop 
if %i% equ %len% goto :eof 
set cur.Name= 
set cur.ID=
for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( 
   set cur.%%k=%%l 
) 
echo Name=%cur.Name% 
echo Value=%cur.ID% 
set /a i=%i%+1 
goto loop

if语句

if %c%==15 (echo "The value of variable c is 15") else (echo "Unknown value") 

if defined :变量是否存在

if defined str1 echo "Variable str1 is defined"

if exists:文件是否存在

if exist C:\set3.txt (echo "File exists") else (echo "File does not exist")

if errorlevel:测试运行的最后一个命令的退出代码

if errorlevel n somecommand

各种命令发出整数退出代码来表示命令的状态。 通常,如果命令成功完成,则命令通过传递0;如果命令失败,命令通过传递1。

for语句

  • %variable 指定一个单一字母可替换的参数。注意:批处理脚本中使用%%variable
  • (set) 指定一个或一组文件。可以使用通配符。
  • command 指定对每个文件执行的命令。
  • command-parameters 为特定命令指定参数或命令行开关。

/d

/r

/l

/f

goto语句

@echo off 
SET /A a=5 

if %a%==5 goto :labela 
if %a%==10 goto :labelb
:labela 
echo "The value of a is 5" 
exit /b 0
:labelb 
echo "The value of a is 10"

运算符

关系运算符

运算符备注
EQU相等
NEQ不等
LSS左小于右
LEQ小于等于
GTR大于
GEQ大于等于

系统日期

echo %DATE%

日期格式化

@echo off 
echo/Today is: %year%-%month%-%day% 
goto :EOF 
setlocal ENABLEEXTENSIONS 
set t=2&if "%date%z" LSS "A" set t=1 

for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do ( 
   for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do ( 
      set %%a=%%d&set %%b=%%e&set %%c=%%f)) 
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

系统时间

echo %TIME%

输入输出

  • 0:stdin 标准输入
  • 1:stdout 标准输出
  • 2:stderr 错误消息

重定向

DIR C:\ > lists.txt 2> &1
  • 使用文件编号和"&"前缀来组合stdout和stderr流

函数

:function_name 
Do_something 
EXIT /B 0
  • function_name是赋予函数的名字,它应该与函数的实际功能相匹配。
  • EXIT语句用于确保函数正常退出.
:Display 
SET /A index=2 
echo The value of index is %index% 
EXIT /B 0

调用 call :function_name

@echo off
Rem main
SETLOCAL
CALL :Display 5 , 10
EXIT /B %ERRORLEVEL%
Rem function
:Display
echo The value of parameter 1 is %~1
echo The value of parameter 2 is %~2
EXIT /B 0
  • 确保在主程序中放入EXIT / B%ERRORLEVEL%语句,以便将主程序的代码与函数分开。
  • 使用~1来访问发送给函数的第一个参数,同样使用~2来访问第二个参数。

进程

查看进程列表TASKLIST

:: 获取内存大于40MB的进程
tasklist /fi "memusage gt 40000"
  
/S system指定要连接的远程系统
/U [domain]user指定命令应在其下执行的用户上下文
/P [password]指定给定用户上下文的密码。 提示输入,如果省略。
/M [module]列出当前使用给定的exe / dll名称的所有任务。 如果未指定模块名称,则显示所有已加载的模块。
/SVC显示每个进程中托管的服务。
/V显示详细的任务信息。
/FI filter显示一组符合过滤器指定条件的任务。
/FO format指定输出格式。 有效值:TABLE,LIST,CSV。
/NH指定“列标题”不应显示在输出中。 仅适用于TABLE和CSV格式。
:: 获取内存大于40MB的进程
tasklist /fi "memusage gt 40000"

终止进程

START "title" [/D path] [options] "command" [parameters]
  
/S system指定要连接的远程系统
/U [domain]user指定命令应在其下执行的用户上下文。
/P [password]指定给定用户上下文的密码。 提示输入,如果省略。
/FI FilterName应用过滤器来选择一组任务,允许使用*通配符。
/PID processID指定要终止的进程的PID。使用TaskList来获取PID。
/IM ImageName指定要终止的进程的映像名称。 通配符*可用于指定所有任务或图像名称。
/T终止指定的进程以及由其启动的任何子进程。
/F指定强制终止进程。
:: 杀死(终止)打开的记事本任务
taskkill /f /im notepad.exe
:: 杀死了一个ID为9901的进程
taskill /pid 9901

启动进程

START "title" [/D path] [options] "command" [parameters]
  
titleCMD窗口标题栏的文本(必需)
path起始目录。
command命令,批处理文件或可执行程序运行。
parameters传递给命令的参数

options:

  
/MIN启动窗口最小化。
/MAX启动窗口最大化。
/LOW使用IDLE优先级。
/NORMAL使用NORMAL优先级。
/ABOVENORMAL使用ABOVENORMAL优先级。
/BELOWNORMAL使用BELOWNORMAL优先级。
/HIGH使用HIGH优先级。
/REALTIME使用REALTIME优先级。
:: 在新窗口中运行批处理脚本test.bat。 窗口将以最小化模式启动,并且指定标题为:“Test Batch Script”。
START "Test Batch Script" /Min test.bat
:: 在另一个进程中运行Microsoft Word,然后在MS Word中打开文件TESTA.txt
START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

别名

dw=dir /w

当要执行dir /w命令时,可以简单地键入dw这个单词。dw这个词现在已经成为命令dir /w的别名。

doskey 别名管理

DOSKEY [options] [macroname=[text]]

创建

@echo off
doskey cd=cd/test
doskey d=dir

删除

@echo off
doskey cd=cd/test
doskey d=dir
d=

将d的值设置为NULL,所以宏d将被删除。

管道(|)

管道运算符(|)将一个命令的输出(默认为STDOUT)引导到另一个命令的输入(默认为STDIN)。

:: 两个命令同时启动,但是sort命令暂停,直到它接收到dir命令的输出。 
:: sort命令使用dir命令的输出作为输入,然后将其输出发送到句柄1(即STDOUT)。
dir C:\ | sort

到此这篇关于教你编写bat脚本Windows批处理的文章就介绍到这了,更多相关bat脚本Windows批处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

教你编写bat脚本Windows批处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

BAT批处理脚本的示例分析

这篇文章主要为大家展示了“BAT批处理脚本的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“BAT批处理脚本的示例分析”这篇文章吧。第一章 批处理基础第一节 常用批处理内部命令简介批处理定
2023-06-08

教你编写Pipeline脚本的方法

Pipeline编写较为麻烦,为此,DataKit中内置了简单的调试工具,用以辅助大家来编写Pipeline脚本,这篇文章主要介绍了如何编写Pipeline脚本,需要的朋友可以参考下
2022-11-13

windows清理系统垃圾bat脚本怎么写

这篇文章主要介绍“windows清理系统垃圾bat脚本怎么写”,在日常操作中,相信很多人在windows清理系统垃圾bat脚本怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”windows清理系统垃圾ba
2023-06-30

如何编写高效的PL/SQL批处理脚本

编写高效的PL/SQL批处理脚本需要注意以下几点:使用合适的索引:在批处理脚本中,通常会涉及大量的数据操作,使用合适的索引可以提高查询和更新操作的效率。确保表中涉及的列都有合适的索引。减少数据库交互次数:尽量将多个操作合并为一个批处理操作,
如何编写高效的PL/SQL批处理脚本
2024-05-08

批处理BAT脚本中set命令怎么使用

在批处理BAT脚本中,set命令用于设置环境变量或者给变量赋值。下面是一些set命令的用法示例:设置环境变量:set MYVAR=value显示所有环境变量:set显示指定环境变量的值:echo %MYVAR%将一个命令的输出结果保存到一个
批处理BAT脚本中set命令怎么使用
2024-03-01

教你编写SQLMap的Tamper脚本过狗

目录测试环境最新版某狗测试方法bypassandorder byunion select加个换行试试获取表字段编写tamper测试环境最新版某狗测试方法安全狗其实是比较好绕的WAF,绕过方法很多,但这里我们就用一种:注释混淆一招鲜吃遍
2023-02-24

教你如何利用bat脚本批量 重命名/复制 文件

这篇文章主要介绍了如何利用bat脚本批量重命名/复制文件,其实与其重命名文件,大家也可以考虑用复制文件办法,这样就不用考虑重命名时候的溢出问题,下面给出文件复制的办法,需要的朋友可以参考下
2022-12-29

有哪些BAT批处理一键生成APK包脚本

这篇文章主要介绍“有哪些BAT批处理一键生成APK包脚本”,在日常操作中,相信很多人在有哪些BAT批处理一键生成APK包脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些BAT批处理一键生成APK包脚本
2023-06-08

批处理BAT脚本中set命令的使用详解

set命令是批处理BAT脚本中常用的命令,用于设置和修改环境变量、定义变量、修改系统配置等。下面是set命令的使用详解:1. 设置环境变量:set变量名=值例如:set PATH=C:\Program Files\Java\jdk1.8.0
2023-08-08

如何使用BAT批处理和VBScript批量安装字体脚本

这篇文章主要介绍“如何使用BAT批处理和VBScript批量安装字体脚本”,在日常操作中,相信很多人在如何使用BAT批处理和VBScript批量安装字体脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使
2023-06-08

VBS脚本和BAT批处理如何实现删除自身

这篇文章给大家分享的是有关VBS脚本和BAT批处理如何实现删除自身的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。VBS脚本和BAT批处理自身删除的方法删除自身之:VBS 把下面的脚本保存为selfkill.vbs
2023-06-08

怎么用bat批处理脚本实现提醒下班要打卡

这篇文章主要讲解了“怎么用bat批处理脚本实现提醒下班要打卡”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用bat批处理脚本实现提醒下班要打卡”吧!你是不是经常下班忘记打卡,要被扣钱的哟
2023-06-08

Bat脚本-Call,Start,直接调用,goto 四种方式调用批处理

这篇文章主要介绍了Bat脚本-Call,Start,直接调用,goto 四种方式调用批处理,需要的朋友可以参考下
2022-12-26

如何实现bat/cmd批处理连接SqlServer数据库查询脚本

这篇文章主要介绍“如何实现bat/cmd批处理连接SqlServer数据库查询脚本”,在日常操作中,相信很多人在如何实现bat/cmd批处理连接SqlServer数据库查询脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-06-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录