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

当前路径:%~dp0

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

符号@

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

加@符号

特殊符号

符号 作用
@ 让后面的命令不显示在窗口,但会执行,一般用于关闭回显@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="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

例子 作用
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 与 变量延迟

参考:https://hellokandy.blog.csdn.net/article/details/78065145?
每条命令执行后都认为是预处理命令,所以对变量赋值后再赋值将不起作用;而想要改变需要使用变量延时

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

%[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 %%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

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

  1. 华为ensp常用简单命令(二)

    华为ensp常用简单命令(二) 华为ensp 1.CE交换机 2.vlan及三大模式划分端口入vlan 3.网桥优先级 4.RSTP和MSTP 5.查看命令 华为ensp 1.CE交换机 CE交换机把 ...

  2. RHCSA (二) —— 常用简单命令Linux文件类型目录操作命令文件操作命令

    RHCSA 第二天 一.常用简单命令 1.timedatectl命令 timedatectl命令中的参数以及作用 2.reboot命令 3.poweroff命令 4.wget命令 wget命令的参数以 ...

  3. 华为ensp常用简单命令(一)

    华为ensp常用简单命令(一) 华为ensp 一.ensp是什么? 二.ensp界面 三.常用简单命令 总结 华为ensp 一.ensp是什么? eNSP(Enterprise Network Sim ...

  4. Linux初步——常用简单命令

    散乱的记录,目前是边学边用,以后有机会再整理 curl命令 发起一个HTTP请求,如:curl "http://www.baidu.com" 加上-I选项查看HTTP协议头的信息, ...

  5. mac vim常用简单命令

    # 打开文件命令 vi /etc/profile vim /etc/profile # 进如编辑模式 i # 从编辑模切换至命令模式 esc # 切换至最后一行行首 :$ # 保存退出 :wq # 保 ...

  6. 软件测试体系学习及构建(3)-Windows系统常用DOS命令和使用

    (3)-Windows系统常用DOS命令使用 1 打开命令行 2 常用快捷操作 2.1 切换驱动器 2.2 命令帮助 2.3 命令补全 2.4 清屏操作 3 目录操作 4 文件操作 5 通配符 6 管 ...

  7. linux学习-简单命令介绍及安装VMware Tools

    常用简单命令介绍 ethernet以太网 pts:模拟终端 图形界面: Ctrl+Alt+F1 字符界面:Ctrl+Alt+F2-F6 切换虚拟终端:(本机操作) # chvt 1-6 关闭图形界面, ...

  8. 将常用adb命令写成bat批处理文件 一键执行

    将常用adb命令写成bat批处理文件 一键执行 写一个用于手机截图并保存到电脑的命令 运行方法与结果 写一个用于手机截图并保存到电脑的命令 直接上代码: @echo off set /p a=请输入: ...

  9. Windows bat常用批处理命令学习

    转载自:https://blog.csdn.net/qq826364410/article/details/79323351 第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义, ...

最新文章

  1. java虚拟机内存分为,深入理解Java虚拟机笔记(一)----内存划分
  2. Web API之service worker
  3. docker mysql sock_docker mysql安装
  4. mongodb连接失败_深入浅出mongodb(一)
  5. html5折叠卡片,基于HTML5折叠卡片式下拉菜单代码
  6. Ubuntu 配置MySQL远程连接
  7. DAO层、ENTITY层、SERVICE层、CONTROLLER层
  8. 两杯咖啡只卖2.5?瑞幸价格出错被“薅羊毛” 官方道歉了...
  9. XX公司定制开发的仓库管理系统
  10. Hive--sql中的explode()函数和posexplode()函数
  11. IDEA 2018.2.5最新版破解到2100年图解教程
  12. java调用系统对话框,[求助]Swing如何调用通用对话框
  13. 计算机二级实践网上教程答案,全国计算机等级二级教程课后习题+答案
  14. java 免费 cms建站系统_最受欢迎免费开源CMS建站系统排行榜
  15. 实例7:stc8a8k定时器0,定时50ms,进入中断之后,加数20次到1秒,计算时间。
  16. 华为matebook13安装折腾Debian11全过程
  17. DirectShow连接Crossbar
  18. java中是什么意思_java中什么意思?
  19. Centos7值得收藏的网站
  20. 广告联盟EMU的理解

热门文章

  1. shoprxr收银系统开源版
  2. 选择正确的 React 状态管理解决方案的指南
  3. 运维自动化----Ansible
  4. matlab 热传导方程,热传导方程有限差分法的MATLAB实现
  5. 莫烦pytorch学习之问题记录与总结
  6. [MySQL安装问题] HeidiSQL连接MySQL报错——完美解决
  7. 计算机网络笔记--1 计算机网络与网络应用(上)
  8. 懒人法解决IPTV和宽带的单线复用问题
  9. JAVA不直接使用指针吗_Java不直接使用指针。
  10. nodejs tar 打包脚本,打包压缩文件文件夹