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打印,它的传参是一个泛型 ...
随机推荐
- hdu: 改革春风吹满地(叉乘求面积)
Problem Description" 改革春风吹满地,不会AC没关系;实在不行回老家,还有一亩三分地.谢谢!(乐队奏乐)" 话说部分学生心态极好,每天就知道游戏,这次考试如此简 ...
- unity shader 描边
https://zhuanlan.zhihu.com/p/66282034 这个是将整个模型放大 在世界坐标操作 https://blog.csdn.net/ToToTofu/article/de ...
- C# 锁汇总
一.前言 本文章汇总c#中常见的锁,基本都列出了该锁在微软官网的文章,一些不常用的锁也可以参考微软文章左侧的列表,方便温习回顾. 二.锁的分类 2.1.用户模式锁 1.volatile 关键字 vol ...
- Mysql的驱动表 被驱动表 join buffer
1.为什么小表驱动大表: for(int i=5;.......){ for(int j=1000;......) {}} 1.1如果小的循环在外层,对于数据库连接来说就只连接5次,进 ...
- 用requests库的get( )函数访问搜狗网站20次
代码: import requests from bs4 import BeautifulSoup def getHTMLText(url): try: r=requests.get(url,time ...
- HDFS Property列表,适用于Hadoop 2.4以上 。
Property列表链接:http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml 以 ...
- 使用 IntersectionObserver API 遇到的一些问题
root 设指定为 document.body 时不会触发更新 See the Pen document.body and IntersectionObserver by y1j2x34 (@y1j2 ...
- Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
错误原因 在pom中引入了mybatis-spring-boot-starter ,Spring boot默认会加载org.springframework.boot.autoconfigure.jdb ...
- Qt非主线程显示窗口的简易思路
首发于我的个人博客:xie-kang.com 博客内有更多文章,欢迎大家访问 原文地址 Qt 在非主线程是无法显示UI窗口的,如果我们在其它线程中处理完数据,需要使用窗口展示,或者在其它线程需要使用到 ...
- 深入理解 Python 虚拟机:复数(complex)的实现原理及源码剖析
深入理解 Python 虚拟机:复数(complex)的实现原理及源码剖析 在本篇文章当中主要给大家介绍在 cpython 虚拟机当中是如何实现 复数 complex 这个数据类型的,这个数据类型在 ...