BAT 基础语法
命令 //功能
- echo //标准输出命令 在CMD窗口中 显示echo 后的内容
- @ //关闭当前行的 回显 回显:源代码在 CMD 窗口中再次显示
- pasue // 暂停程序 的执行
- call //调用其他批处理 或着 代码块
- rem // 注释信息的标识
- set //定义一个变量
- goto //跳转 用来作为流程控制
- start //开始一个新程序 或 批处理
- if // 条件判断
- for //循环执行 循环的 基准的是 "行"
- setlocal //设置 环境变量
- shift //从指定参数出 开始执行
- "?" "*" 通配符
- "<" ">" ">>" //重定向符号
- "|" //管道符号 把前面得到结果 作为 后面的输入
对于不了解的命令参数 请在CMD中输入命令 命令名字 /? 后enter查看 for /? cd /? dir /?
1.echo
2.@
3.pause
5.rem

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

@echo off :label6
echo 我是标签内的代码块 :: 请将echo6.bat 与该.bat文件 放同一个文件夹中
call echo6.bat
echo 调用 echo6.bat 成功
:: call 调用 代码块 需要有 : 号
call :label6
pause
6.set

@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
7.goto

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

@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
9.if

@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
10.for
15."|"
统计.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
11.setlocal
可以设置 环境变量 和 变量延时
setlocal enabledelayedexpansion
用于开启变量延迟,这是告诉解释器,在遇到复合语句的时候,不要将其作为一条语句同时处理,而仍然一条一条地去解释。但是这时必须用!str!来引用变量,如果仍然用%str%引用是不起作用的
()中的命令相当与一条命令 你在一条语句中即赋值改变 又调用变量 你说 变量值该是原来 还是该 你刚刚赋值的 需要开启变量延时 告诉程序 我要 及时跟新后的

@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
12.shift

@echo off
:begain
if "%1"=="" goto end
echo %1 %2 %3
shift
goto begain
:end
pause
该代码想要测试出效果需要
在代码所在的目录下 上面的地址栏窗口 输入cmd 然后enter
在出现的CMD窗口中 输入 xxx是你对上面代码的命名
xxx.bat 1 2 3 4
结果如下

代码中
%1 %2 %3 ... 是 从当前命令行获取到的参数 其取值范围是 1-9
shift 表示
- shift 是将所有参数往前移动一位。
- shift /2 是从第2个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1)
- shift /3 是从第3个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1,2)
- shift 的取值范围是 0-8
将当前命令行 后面的参数位置给bat后 发现shift后并没有被执行 估计 都作为了字符串处理
13 "?" "*"

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

@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
重定向 标准输出是到CMD窗口 用1 默认 表示正常输出 2表示 出错提示
< 定向
输入不换行 利用set /p 提示功能 不定义变量 给其赋值nul 空 存在
>定向到 txt 中 如果txt 中原来有内容将会 清空录入
>>定向到 txt中 在原来的基础上 追加内容
pause>nul 2>&1 &表示链接符 相当于 1>null 2>null 建议 pause>nul 2>nul
BAT 基础语法的更多相关文章
- .bat学习-基础语法(常用)
一般来说,脚本或者语言都有相同地方 定义变量,输入,输出,判断条件等等.知道的相同之处,我们就可以借助强大的搜索引擎进行查找我们想要知道的东西. bat为批处理脚本BATCH.现在只知道是使用于win ...
- windows bat批处理语法简析
第一节先介绍windows批处理.这个起源于跟旁边同事学习在windows用命令行办公,渐渐地有些批处理功能就需要了,于是专门抽出了几天学习了一下.我认为文档最重要的功能是为了备忘,择取了很多文档的例 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- iOS-----正则表达式的基础语法
正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- emmet 系列(1)基础语法
emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...
- Scala基础语法 (一)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
- Java基础语法
java基础学习总结——基础语法1 一.标识符
- javascript中正则表达式的基础语法
× 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
随机推荐
- Python测试——安装篇总结
测试用到的工具自己知道的有: 写脚本类:sublime ,PyCharm,Eclipse+PyDev,目前我知道的只有这么多,大家知道的肯定还有很多,欢迎留言哈 录制脚本类:火狐自带的seleniu ...
- vue中router.resolve
resolve是router的一个方法, 返回路由地址的标准化版本.该方法适合编程式导航. let router = this.$router.resolve({ path: '/home', que ...
- 2019年居然还出版了一本ASP学习的书籍
ASP+Dreamweaver动态网站开发(第2版)孙更新,宾晟,李晓娜 著 内容简介 <ASP+Dreamweaver动态网站开发(第2版)>详细介绍了ASP的脚本语言基础.ASP的相关 ...
- 【StoneDB 模块介绍】服务器模块
[StoneDB 模块介绍]服务器模块 一.介绍 客户端程序和服务器程序本质上都是计算机上的一个进程,客户端进程向服务器进程发送请求的过程本质上是一种进程间通信的过程,StoneDB 数据库服务程序作 ...
- CF1732A Bestie
思路 观察数据\(n \le 20\) 直接暴力. 我们直接算所有数的\(GCD\),然后枚举\(1\)~\(n\)的每一个数要不要选,然后选的话,就把原来的\(GCD\)和当前枚举的数\(GCD\) ...
- tableau连接mysql
1.下载驱动地址:https://dev.mysql.com/downloads/connector/odbc/ 2.选择MSI Installer自动安装自动配置 3.本地127.0.0.1(其他I ...
- 几行代码,把zip文件直接破解
几行代码,把zip文件直接破解,不想讲解了,如果要使用就直接复制吧,讲解挺累的 import itertools import zipfile import os filename = "z ...
- SimpleITK和nibable读取nii文件
import SimpleITK as sitk path = 'nii全路径' nii_obj = sitk.GetArrayFromImage(sitk.ReadImage(path)) #sha ...
- sql处理重复的列,更好理清分组和分区
一.分组统计.分区排名 1.语法和含义: 如果查询结果看得有疑惑,看第二部分-sql处理重复的列,更好理清分组和分区,有建表插入数据的sql语句 分组统计:GROUP BY 结合 统计/聚合函数一起使 ...
- FastJson 反序列化漏洞原理分析
Fastjson 简介 fastjson框架:https://github.com/alibaba/fastjson fastjson-jndi:https://github.com/earayu/f ...