bat批处理文件的注释,和常用简单命令

bat批处理文件的注释,和常用简单命令常用的 bat 批处理命令的简单使用 bat 文件注释

大家好,欢迎来到IT知识分享网。

参考:https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/windows-commands,https://blog.csdn.net/wuhenyouyuyouyu/article/details/?

当前路径:%~dp0

这个参数只能在bat文件中在正常使用,在cmd窗口直接输入是没用的,在cmd中可以使用cd ./命令查看

符号@

特殊符号

符号 作用
@ 让后面的命令不显示在窗口,但会执行,一般用于关闭回显@echo off和不显示注释
% 引导bat文件的输入变量,%1~9;%*表示所有变量
>,>> 覆盖和追加内容到文件
< 从文件中读入
>&,<& 一个句柄写入到另一个,某个数据流输出的地址,(NT CMD 称为句柄,MSDOS称为设备),常用句柄0,1,2,分别指:stdin(标准键盘输入),stdout(标准输出输出到命令提示符窗口),stderr(标准错误)
^ 转义字符,放在某些特殊字符前面,><
, 可以认为是空格
命令相同时将多个参数用分号分开
() 必须成对存在,可以包含多行命令
!和% 一对包括变量名,!在延迟变量中使用,setlocal
:~ 用于字符串处理

字符串处理

字符串截取、命令嵌套

命令格式:%变量名:~ m,n%,其中,m表示开始位置(默认开头),n表示从m位置开始向后截取的字符个数(默认到结尾),若n为负数则表示向前截取个数,作用:将命令中的某段字符截取,通过call将字符做为命令执行。

@echo off set str1=aaa echo ok bbb echo 初始字符串:%str1% ::aaa echo ok bbb echo 生成命令字符串如下: echo %str1:~4,7% ::echo ok echo 运行命令字符串生成最终结果为: call %str1:~4,7% ::ok pause 

字符串内字符替换

格式:set 变量名=%变量名:n=m%其中n表示原来字符串,m表示用来替换的新字符串;都不需要用引号包裹

set a="" echo %a% ::"" set a=%a:44=kmk% echo %a% ::"123kmk567" pause 

字符串合并

格式:set str1=%str1%%str2%

截取字符串传入截取长度

参考下面的setlocal

直接 echo %args:~%num%,-5% 没办法想要的字符串,需要如下两步 setlocal enabledelayedexpansion ::设置变量延时有效 echo !args:~%num%,-5! ::变量使用!!包括,%num%变量传入 

echo

例子 作用
echo [{on off}]
echo 显示当前echo状态
echo. 空白行,echo后紧跟.或,或:或"或[或\或]
echo Y |del A:. 使用管道命令,将y做为后面执行的输入
echo 文件内容>文件名/echo 文件内容 >>文件名
echo 内容 >;PRN 向打印机输出打印内容或打印控制码
echo ^G 产生鸣响,特殊字符

pause

功能:暂停,并”打印请按压任何一个键继续…”,相当于两个功能:1、暂停2、@echo 按压任何一个按键继续。。。;
也可以使用echo 其他提示语 & pause>nul 显示自己的提示语

choice选择命令

返回值是默认在环境变量errorlevel中,不需要自己定义返回值;
命令格式

choice /c 选项 /n /m 选项对应提示信息 参数含义: /c后面是实际可输入字符,若没有后面的内容,会自动将每个字符分开作为输入提示,且每个字符自动转为大写 /n隐藏默认选项的提示, /m自定义显示自己的提示 

代码实例1

@echo off CHOICE /C YN :: echo 输入是:%errorlevel% ::根据上面选择得到不同返回 pause>nul ::为了不在最后一行显示pause的输出:继续按键。。 

在这里插入图片描述
实例2

@echo off CHOICE /C YNc /n /m 自己的提示:y:1,n:2,c:3 echo 输入是:%errorlevel% ::根据上面选择得到不同返回 pause>nul ::为了不在最后一行显示pause的输出:继续按键。。 

在这里插入图片描述

type

type 文件 ::显示文件内的内容

帮助命令help 、/?

两种形式:第一种:help 命令;第二种:命令/?

跳转goto

bat文件中

:label ...其他内容 goto label 

目录切换push,pop

相当于push先存储当前路径,然后跳转到路径中执行,然后通过pop返回原来路径,相当于cd 新路径,执行完后再cd 旧路径

@echo off c: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹 md d:\mp4 #在 D:\ 建立 mp4 文件夹 cd /d d:\mp4 #更改当前目录为 d:\mp4 pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3 popd #恢复当前目录为刚才保存的 d:\mp4 

setlocal 与 变量延迟

@echo off setlocal enabledelayedexpansion ::固定语句 set a=4 ::设置变量值 set a=5 & echo !a! ::这里使用英文叹!号包裹变量 pause 

attrib 更改文件属性

ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[drive:] [path] filename] [/S [/D]] ::属性解释 + 设置属性。 - 清除属性。 R 只读文件属性。 A 存档文件属性。 S 系统文件属性。 H 隐藏文件属性。 [drive:][path][filename] 指定要处理的文件属性。 /S 处理当前文件夹及其子文件夹中的匹配文件。 /D 也处理文件夹。 

传入参数和call命令使用

::假如当前bat文件和test.bat在同一个文件夹下 call test.bat "hell" "haha" 

在“test.bat”文件里写:

echo %1 (打印: "hello") echo %2 (打印: "haha") 

判断命令if、else

语法:

::第一种形式 if [not] "参数" == "字符" ::执行的命令,经常和call配合使用,**call将参数传入后用%1的形式接收** ::第二种形式 if [not]exit 文件路径 执行对应命令 ::判断文件是否存在 ::第三种情况 if 条件 (成立时执行的命令) else (不成立时执行的命令) 

运算符:

EQU - 等于 (一般使用“==”) NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法) LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于 

for循环使用

1) for { 
   %variable | %%variable} in (set) do command [command-parameters] 其中,%variable 指定一个单一字母可替换的参数。变量名称是区分大小写的,所以 %i 不同于 %I 在批处理文件中使用 FOR 命令时,指定变量建议用 %%variable而不要用 %variable。(set) 指定一个或一组文件。可以使用通配符。 2) 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持: a.FOR /D %variable IN (set) DO command [command-parameters] 如果集里面包含通配符,则指定与目录名匹配,而不与文件名匹配。 b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] 检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。 如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。 c.FOR /L %variable IN (start,step,end) DO command [command-parameters] 该集表示以增量形式从开始到结束的一个数字序列。 

使用例子,

1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。 for %%c in (*.bat *.txt) do (echo %%c) a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。 for /D %%a in (*e* *i*) do echo %%a b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。 for /R E:\test %%b in (*.txt *.bat) do echo %%b for /r %%c in (*) do (echo %%c) :: 遍历当前目录下所有文件 c. 如下命令行将产生序列 1 2 3 4 5 for /L %%c in (1,1,5) do echo %%c 

对输出字符的显示处理

:: bat 代码 @echo off echo ^"1111>temp.txt echo "2222">>temp.txt echo 3333^">>temp.txt echo "4444"44>>temp.txt echo ^"55"55"55>>temp.txt rem 上面建立临时文件,注意不成对的引号要加转义字符^,重定向符号前不要留空格 FOR /F "delims=" %%i IN (temp.txt) DO echo %%~i pause del temp.txt ::输出结果::::::::::::::: :: 无头不删,有头连尾删除,中间绝不删 1111 #字符串前的引号被删除了 2222 #字符串首尾的引号都被删除了 3333" #字符串前无引号,后面的引号保留 4444"44 #字符串前面的引号删除了,而中间的引号保留 55"55"55 #字符串前面的引号删除了,而中间的引号保留 请按任意键继续. . . ~I - 删除任何引号("),扩展 %I %~fI -%I 扩展到一个完全合格的路径名 %~dI - 仅将 %I 扩展到一个驱动器号 %~pI - 仅将 %I 扩展到一个路径 %~nI - 仅将 %I 扩展到一个文件名 %~xI - 仅将 %I 扩展到一个文件扩展名 %~sI - 扩展的路径只含有短名 %~aI -%I 扩展到文件的文件属性 %~tI -%I 扩展到文件的日期/时间 %~zI -%I 扩展到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩展到 空字符串 

注释方式

方式 例子
:: ::注释内容 ,echo on 时也不会打印出来
rem rem 注释内容 ,当echo on注释语言会打印出来
@rem @rem 注释内容,echo on时注释语言也不会打印出来

注释方式的不同
rem:是一个命令,所有单独一行或,用&和别的命令隔开

组合命令

命令 作用
命令1 & 命令2&命令3... 命令都会执行
命令1 && 命令2&&命令3... 碰到一个执行错误,后面的就不执行
命令1||命令2||命令3... 碰到第一个执行正确,后面不执行
下面是管道命令
命令1 | 命令2|命令3 前面命令的输出做为后面命令的输入
>, >> >>表示追加,而>表示对旧的删除后写入
< 从文件中读入命令写入

bat中的变量值

%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。 %APPDATA% 本地 返回默认情况下应用程序存储数据的位置。 %CD% 本地 返回当前目录字符串。 %CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。 %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。 %COMPUTERNAME% 系统 返回计算机的名称。 %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。 %DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。 %ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。 %HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用 户主目录是在“本地用户和组”中指定的。 %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是 在“本地用户和组”中指定的。 %LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。 %NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。 %OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。 %PATH% 系统 指定可执行文件的搜索路径。 %PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。 %PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64 基于 Itanium %PROCESSOR_IDENTFIER% 系统 返回处理器说明。 %PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。 %PROCESSOR_REVISION% 系统 返回处理器的版本号。 %PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。 %RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 %SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录) 的驱动器。 %SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。 %TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。 有些应用程序需要 TEMP,而其他应用程序则需要 TMP。 %TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。 %USERDOMAIN% 本地 返回包含用户帐户的域的名称。 %USERNAME% 本地 返回当前登录的用户的名称。 %USERPROFILE% 本地 返回当前用户的配置文件的位置。 %WINDIR% 系统 返回操作系统目录的位置。 变量的显示 在CMD里输入 echo %WINDIR% 这样就能显示一个变量的值了! 举个实际例子,比如我们要复制文件到当前帐号的启动目录里就可以这样 copy d:\1.bat "%USERPROFILE%\「开始」菜单\程序\启动\" %USERNAME% 本地 返回当前登录的用户的名称。 注意有空格的目录要用引号引起来 

set自定义系统变量

语法:第一种:在程序中设置好set 变量名 = 变量值第二种:手动输入set /p 变量名=“请输入变量值”,有点儿像是python中的input或者c语言中的sanf

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114247.html

(0)
上一篇 2025-12-09 21:00
下一篇 2025-12-09 21:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信