BAT 基础语法

命令 //功能

  1. echo //标准输出命令 在CMD窗口中 显示echo 后的内容
  2. @ //关闭当前行的 回显 回显:源代码在 CMD 窗口中再次显示
  3. pasue // 暂停程序 的执行
  4. call //调用其他批处理 或着 代码块
  5. rem // 注释信息的标识
  6. set //定义一个变量
  7. goto //跳转 用来作为流程控制
  8. start //开始一个新程序 或 批处理
  9. if // 条件判断
  10. for //循环执行 循环的 基准的是 “行”
  11. setlocal //设置 环境变量
  12. shift //从指定参数出 开始执行
  13. “?” “*” 通配符
  14. “|” //管道符号 把前面得到结果 作为 后面的输入

对于不了解的命令参数 请在CMD中输入命令 命令名字 /? 后enter查看 for /? cd /? dir /?

1.echo

2.@

3.pause

5.rem

BAT 基础语法BAT 基础语法
@echo off
rem 上面@ 关闭echo off 的回显    echo off 关闭 下面整个代码的回显
rem 注释代码标识 还能用 ::
echo hello world
:: 如果不暂停程序 执行后 直接结束 看不结果
pause

View Code

4.call

BAT 基础语法BAT 基础语法
@echo off

:label6
echo 我是标签内的代码块

:: 请将echo6.bat 与该.bat文件 放同一个文件夹中
call echo6.bat
echo 调用 echo6.bat 成功
:: call 调用 代码块 需要有 : 号
call :label6
pause

View Code

6.set

BAT 基础语法BAT 基础语法
@echo off
set var1=1
set var2=2
set var3=3
::调用变量请用 %%包围变量
echo 您设置的变量var1:%var1%
pause
echo 以var开头的变量有
set var
pause
echo 更改变量值
set var1=1111
echo 您设置的变量var1:%var1%
::清空变量
set var1=
set var2=
set var3=
::请看系统提示
set var
pause

View Code

7.goto

BAT 基础语法BAT 基础语法
@echo off
:: call 转到指定标签处执行命令 执行完毕后 返回原处
call :lable3
:lable1
echo 这是lable1代码块中的内容显示
:: goto 跳转到 指定标签处 执行命令 不在返回原处
goto lable3
:lable2
echo 这是lable2代码块中的内容显示
:lable3
echo 这是lable3代码块中的内容显示
:lable4
echo 这是lable4代码块中的内容显示
pause

View Code

8.start

BAT 基础语法BAT 基础语法
@echo off
:: start 可以启动快捷方式形式的exe文件
start D:\UserData\Pictures\TIM
pause
call D:\UserData\Pictures
pause
::路径最好不要有中文 有空格加引号
call "D:\Program Files (x86)\Tencent\TIM\Bin\QQScLauncher.exe"
pause
start  echo6.bat
pause

View Code

9.if

BAT 基础语法BAT 基础语法
@echo off
if 1==1 echo 值相同
if aa==aa ( echo 字符相同 )else ( echo 字符不同 )
set /p num1=请输入第一个数值:
set /p num2=请输入第二个数值:
rem 建议if else 写在一行
rem 小于 大于 等等比较运算符 请查看 if /? 帮助
if %num1% LSS %num2% ( echo 数字2大 ) else if %num1% EQU %num2% ( echo 一样大 ) else (echo 数字1大)
pause
if exist if6666.bat ( echo 文件存在 ) else  echo 文件不存在
pause

View Code

10.for

15.”|”

统计.bat所在目录的下的所有文件

BAT 基础语法BAT 基础语法
@echo off
set /a sum=0
for /f %%i in ( 'dir /b /a-d' ) do (
set /a sum=sum+1
)
echo 共有%sum%个文件
pause
:: 来个简单的
dir /b /a-d | find /v /c ""
pause

View Code

11.setlocal

可以设置 环境变量 和 变量延时

setlocal enabledelayedexpansion

用于开启变量延迟,这是告诉解释器,在遇到复合语句的时候,不要将其作为一条语句同时处理,而仍然一条一条地去解释。但是这时必须用!str!来引用变量,如果仍然用%str%引用是不起作用的

()中的命令相当与一条命令 你在一条语句中即赋值改变 又调用变量 你说 变量值该是原来 还是该 你刚刚赋值的 需要开启变量延时 告诉程序 我要 及时跟新后的

BAT 基础语法BAT 基础语法
@echo off
echo disabledelayedexpansion
set str=old
if %str% == old (
set str=new
echo %str%
)
pause
echo enabledelayedexpansion
setlocal enabledelayedexpansion
set str=old
if %str% == old (
set str=new
echo !str! ::开启请用!var!

echo %str% ::未变
)
pause

View Code

12.shift

BAT 基础语法BAT 基础语法
@echo off
:begain
if "%1"=="" goto end
echo %1 %2 %3
shift
goto begain
:end
pause

View Code

该代码想要测试出效果需要
在代码所在的目录下 上面的地址栏窗口 输入cmd 然后enter

在出现的CMD窗口中 输入 xxx是你对上面代码的命名
xxx.bat 1 2 3 4

结果如下

BAT 基础语法

代码中

%1 %2 %3 … 是 从当前命令行获取到的参数 其取值范围是 1-9

shift 表示

  1. shift 是将所有参数往前移动一位。
  2. shift /2 是从第2个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1)
  3. shift /3 是从第3个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1,2)
  4. shift 的取值范围是 0-8

将当前命令行 后面的参数位置给bat后 发现shift后并没有被执行 估计 都作为了字符串处理

13 “?” “*”

BAT 基础语法BAT 基础语法
@echo off
::? 表示匹配任意一个字符
::下面代码表示 列出 文件名为2个字符的后缀为.bat的文件
dir ??.bat
pause
:: * 表示匹配任意数量个任意字符
::下面代码表示 列出 所有的.bat 的文件
dir *.bat
pause

View Code

14 ”

BAT 基础语法BAT 基础语法
@echo off
dir /b /a-d>FileList.txt
set /a sum=0
for /f %%i in ( ' dir /b /a-d ' ) do set /a sum=sum+1
echo %sum%
echo 当前目录下共有%sum%个文件>> FileList.txt
pause
set /p =输入不换行,<nul
set /p =继续输入,<nul
set /p =你换echo试试<nul
set
pause>nul 2>&1

View Code

重定向 标准输出是到CMD窗口 用1 默认 表示正常输出 2表示 出错提示

< 定向

输入不换行 利用set /p 提示功能 不定义变量 给其赋值nul 空 存在

定向到 txt 中 如果txt 中原来有内容将会 清空录入

定向到 txt中 在原来的基础上 追加内容

pause>nul 2>&1 &表示链接符 相当于 1>null 2>null 建议 pause>nul 2>nul

Original: https://www.cnblogs.com/acman-mr-lee/p/16213305.html
Author: ACMAN-Mr.Lee
Title: BAT 基础语法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/642743/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球