用了windows系统这么多年了,对bat也不是很了解。最近研究了一下bat的用法。这里就大概列举一下自己的用法

参考网址

基本命令

echo

  • echo我们可以理解成程序中的输出,和我们Java的System.out.println是一个效果。

  • 关于echo有两种设置 echo on 和echo off.前者是在此命令之后的命令都会显示输出,后者则不显示后面的执行命令了

@

  • @ 的功能和echo off的功能一样都是让命令不显示的。唯一的区别的@ 影响的是当前行而echo off影响的是在其后的所有的命令行。
  @echo off
redis-server.exe redis.conf
@pause
  • 例如上面的bat文件的语句最终执行的效果是 echo off 这个命令不显示 因为@ 控制当前行不显示。redis-server.exe redis.conf 这个命令也不显示 。因为echo off之后的命令都不现实。除非遇到echo on在此开启了显示的功能。

call

  • call别人说和start功能一样,但是自己测试call无法使用,取而代之的我用的是start, start和call的作用就是在本bat文件中调用了别的bat文件。如果不用start或者call的话,那么本bat文件将执行完别的bat就不在继续执行本bat的其他语句了。相当于Java中的break了。

pause

  • pause是暂停的意思,就是bat执行完了之后cmd窗口不会关闭而是在pause的地方输出 press any key …. 。他和exit相对。exit是指程序结束后就关闭窗口。正常pause和exit在文件的最后存在。

rem

  • 作为程序员都是知道注释的重要性的。就算是自己写的代码没有良好的注释过一段时间自己都会忘记这段代码的作用。而在bat批处理语言中rem就是起到注释的作用。

    rem 我是注释

参数传递

  • Java或者其他语言中都是可以进行参数传递的,这样可以增加各个模块的联系,bat也是可以传递参数的。他的传递参数的方法比较特别,不需要指定参数的类型。只是按参数的顺序来获取的。分别用%0~%9来获取参数。这样也就是说参数只能是9个。其中%0表示的bat方法的本身。%1~%9表示第几个参数。

  • 新建一个method.bat,内容为echo %1。我们新开cmd窗口。首先cd到method.bat所在的文件目录中。执行语句 method.bat helloworld 程序结果 为 helloworld。

特殊命令

  • 上面的一些基础的命令之外还有一些属于高级命令 ,正常情况写我们做逻辑判断的时候经常用到 if goto choice for,这四个使我们经常用到。

if

  • if 就是我们用到的程序判断,根据条件执行不同的语句。其中的基本格式如下

    if “%1”==”test” echo test

  • 上面的代码执行的效果就是输入了test的参数就会输出test 结果,输入的可以是“ hello world ” ,在程序中的参数就是带引号的参数。

  • if [not] exist 判断不存在是执行的语句

  • if exist 判断存在时存在的语句

  • if errorlevel num 根据程序的返回值判断

goto

  • goto就是跳转到哪里 基本语法
 goto zxh
:zxh
echo 跳转啦
  • 其中goto去的端点 需要用:开头

choice

  • 这个选择项用的挺多的,因为考虑程序的大众化,我们程序正常会给用户提供选择,这里就需要用到了choice了。

  • 关于choice中有哪些参数,我们可以打开cmd窗口执行 choice /?

  • 上面的一张图片已经解释了choice的选项说明,我们有设么格式的提示选项上面的图片事列已经列出了五种类型的。我们根据不同需求些不同的bat.

  • 其中在/c后面的提示列表的编号我们一次是1,2,3….N。在我们根据errorlevel的值判断的时候必须从高到底比如如下一段代码才有效

@echo off
choice /C dme /M "defrag,mem,end"
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errorlevel 1 goto defrag :defrag
echo I am defrag
goto end :mem
echo I am mem
goto end :end
echo good bye
pause

for

  • for循环是我们遍历数据用的最多了。我们经常通过for来执行相同理念的操作。
FOR %%variable IN (set) DO command [command-parameters]
  • 上面的for循环其实用Java语言写就是一下代码
for(Object obj in List<Object>){
//执行操作
}
  • 所以上面的variable就是下面的obj
  • set 就是下面的list集合
  • command是我们的执行操作
  • command parameters 是我们执行操作的时候用到的参数正常就是variable(obj)

Windows下的bat原来可以为我们做很多的更多相关文章

  1. 在Windows下使用BAT调度存储在资源库中的KTR

    描述: 在Windows下使用BAT调度存储在资源库中的KTR 准备环境: 1.ktr文件(该KTR必须是存储在资源管库中的) 2.bat文件 @echo off D: cd D:\software\ ...

  2. 安装在Linux下的jenkins执行windows下的bat命令

    launch method里面没有 launch agent via java web start 默认是disable 需要改成random 转载自: http://blog.csdn.net/so ...

  3. windows下通过.bat运行java程序

    在windows下运行Java项目,单独的jar可以使用,java -jar xxx.jar 运行,如果是一个zip包,里面包含了class文件和所依赖的jar的时候,可以使用 (也可以以看看这里): ...

  4. Windows下批处理文件(.bat)的使用

    cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多.cmd文件只 ...

  5. openssl windows 下 编译 bat

    ++++全部++++++++ @echo offrem set sslpath=C:\0openssl\rem echo %sslpath% set X86_lib=C:\0openssl\32\li ...

  6. Windows下的bat中文乱码问题

    起初拿到一个bat文件,我在修改时看到编码是gb2312,我就直接将其转变为了utf8...但是在执行后的黑窗口出现中文乱码问题,最后网上获取帮助是修改编码为ANSI编码,确实不出现乱码了,ANSI是 ...

  7. Windows下通过bat脚本实现自动上传文件到ftp服务器

    @Echo Off Echo open ip_address [port] >ftp.up Echo [username]>>ftp.up Echo [password]>&g ...

  8. windows下用bat启动jar包,修改cmd标题(title)

    新建start.bat,输入以下内容即可. @echo off title myprogress-%date%-%time%-%cd% java -jar myprogress.jar

  9. windows下基于bat的每1分钟执行一次一个程序

    @echo off cls mode con cols=35 lines=6 & color 5B :p call python C:\省局监控\ahwater_perf_monitor.py ...

随机推荐

  1. scrapy基础知识之 CrawlSpiders爬取lagou招聘保存在mysql(分布式):

    items.py import scrapy class LagouItem(scrapy.Item): # define the fields for your item here like: # ...

  2. Larave使用composer安装无反应,提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Composer”

    按照Laravel文档的安装方式在windows上安装Laravel时,执行composer global require "laravel/installer". 然后命令行就显 ...

  3. Web前端——JavaScript扩展补充

    JS补充 document也是windows的一个子对象 a标签点击事件 要想设置点击a标签,执行某种方法,推荐在a标签的herf属性使用JavaScript伪协议,实现点击之后执行的js方法,而不是 ...

  4. Spark 中的机器学习库及示例

    MLlib 是 Spark 的机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib 由一些通用的学习算法和工具组成,包括分类.回归.聚类.协同过滤.降维等,同时还包括底层的优化 ...

  5. 多线程总结-同步之volatile关键字

    目录 1 案例引出可见性 2 案例引出原子性 1 案例引出可见性 代码解析:新起一个子线程执行m()方法,1秒后主线程将b置为false,子线程是否会停止执行死循环while(b){},打印" ...

  6. stixel_world+Multi_stioxel_world+semantic_stixel_world知识拓展

    Semantic_Stixel_World 学习笔记 因项目方向更改,该研究暂停, 转为opengl等3D渲染. Author: Ian 星期四, 20. 六月 2019 06:11下午 最近看网络上 ...

  7. [原创]自动化部署K8S(v1.10.11)集群

          标准运维实现自动化部署K8S集群主要分两步,第一步是部署gse-agent,拱第二步执行部署. 第一步:部署gse-agent.如下: 第二步:部署k8s集群.主要通过作业平台分为5小步执 ...

  8. 洛谷 P3367 并查集 【模板题】

    题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入输出格式 输入格式: 第一行包含两个整数N.M,表示共有N个元素和M个操作. 接下来M行,每行包含三个整数Zi.Xi.Yi 当Zi=1 ...

  9. Android生成随机数

    此方法通过把当前时刻长整型数传给Random对象,让它产生的值随着时间而变化. String s = ""; Random ran =new Random(System.curre ...

  10. java oop 单列 双列 集合, 迭代器 的使用和说明

    一.集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定, ...