900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > bat批处理文件的注释 和常用简单命令

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

时间:2023-06-12 02:49:50

相关推荐

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

参考:/zh-cn/windows-server/administration/windows-commands/windows-commands,/wuhenyouyuyouyu/article/details/120736519?

当前路径:%~dp0

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

符号@

表示不显示后面的命令行信息,常在第一行使用@echo off;为了不打印这句回显命令

未添加@符号

加@符号

特殊符号

字符串处理

字符串截取、命令嵌套

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

@echo offset str1=aaa echo ok bbbecho 初始字符串:%str1% ::aaa echo ok bbbecho 生成命令字符串如下:echo %str1:~4,7% ::echo okecho 运行命令字符串生成最终结果为:call %str1:~4,7% ::okpause

字符串内字符替换

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

set a="12344567"echo %a% ::"12344567"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

pause

功能:暂停,并"打印请按压任何一个键继续…",相当于两个功能:1、暂停2、@echo 按压任何一个按键继续。。。;

也可以使用echo 其他提示语 & pause>nul显示自己的提示语

choice选择命令

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

命令格式

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

代码实例1

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

实例2

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

type

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

帮助命令help 、/?

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

跳转goto

bat文件中

:label...其他内容goto label

目录切换push,pop

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

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

setlocal 与 变量延迟

参考:https://hellokandy./article/details/78065145?

每条命令执行后都认为是预处理命令,所以对变量赋值后再赋值将不起作用;而想要改变需要使用变量延时

@echo offsetlocal 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命令使用

%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。

变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用 %1 到 %9 顺序表示

call命令语法:call 文件完整路径 参数1...如果使用当前bat文件所在文件夹可用%cd%代替文件名字后缀必须是.bat或.cmd

一个bat文件里

::假如当前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 %%ab. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。for /R E:\test %%b in (*.txt *.bat) do echo %%bfor /r %%c in (*) do (echo %%c) :: 遍历当前目录下所有文件c. 如下命令行将产生序列 1 2 3 4 5for /L %%c in (1,1,5) do echo %%c

对输出字符的显示处理

:: bat 代码@echo offecho ^"1111>temp.txtecho "2222">>temp.txtecho 3333^">>temp.txtecho "4444"44>>temp.txtecho ^"55"55"55>>temp.txtrem 上面建立临时文件,注意不成对的引号要加转义字符^,重定向符号前不要留空格FOR /F "delims=" %%i IN (temp.txt) DO echo %%~ipausedel 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 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串

注释方式

注释方式的不同

rem:是一个命令,所有单独一行或,用&和别的命令隔开

组合命令

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。