关闭

Windows下的bat原来可以为我们做很多

标签: windowsbat基本语句
1027人阅读 评论(0) 收藏 举报
分类:

用了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)

    这里写图片描述

0
0
查看评论

windows下tomcat指定命令窗口标题

背景: windows操作系统,启动多个tomcat,多个命令窗口标题都是同名的“Tomcat”,难以区分。 解决: 为每一个tomcat命令窗口自定义标题,区分各个tomcat。 编辑tomcat所在目录中的bin路径下的catalina.bat文件,找到如下行: set _EXECJAVA=st...
  • okgoodyes
  • okgoodyes
  • 2016-11-14 13:11
  • 819

[Java]Spring AOP基础知识-动态代理

Spring AOP使用动态代理技术在运行期织入增强的代码,为了揭示Spring AOP底层的工作机理,有必要对涉及到的Java知识进行学习。Spring AOP使用了两种代理机制:一种是基于JDK的动态代理;另一种是基于CGLib的动态代理。之所以需要两种代理机制,很大程度上是因为JDK本身只提供...
  • abv123456789
  • abv123456789
  • 2015-10-15 10:11
  • 1614

第五章 图像基础(GDI 映像方式)(1)

<br />GDI 映像方式<br />到目前为止,所有的程序都是相对于显示区域的左上角,以图素为单位绘图的。这是内定情况,但不是唯一选择。事实上,「映像方式」是一种几乎影响任何显示区域绘图的设备内容属性。另外有四种设备内容属性-窗口原点、视端口原点、窗口范围和视端口范围-与...
  • xmcai123
  • xmcai123
  • 2011-04-22 01:48
  • 255

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

Windows下批处理文件(.bat)的使用!
  • fengbingchun
  • fengbingchun
  • 2015-08-12 14:22
  • 3552

临界区的实现与原理

临界区概述: 用于多线程的互斥访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入临界区后,其他试图访问的线程将被挂起,直到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到对临界区的互斥访问。(临界区中一般都是一个简短的代码段) 在WINDOWS中,临界区是一...
  • extend_die
  • extend_die
  • 2015-11-02 15:31
  • 536

windows内部命令之prompt

经常出现在命令窗口中不能运行命令的事情。甚是让人头疼。 在“运行”中输入“cmd”,进入命令窗口,运行“ipconfig”,“ping”,“route print”等,全不能运行。而在窗口中输入“%systemRoot%\system32\ipconfig”,却能正常运行。从而判断应该是系统变量中...
  • zhuying_linux
  • zhuying_linux
  • 2011-11-23 16:36
  • 3570

Windows BAT批处理编写要点

批处理可以说是windows下的shell,虽然没有shell强大吧,但也足以用来完成很多任务了。这里记录了大部分的批处理用法,最后有一个调用yuicompressor压缩js/css的脚本。 基础  先说使用批处理要注意的几点: 尽量不要将批处理要操作的文件放在不同的盘符下...
  • makeyourprogress
  • makeyourprogress
  • 2017-05-22 16:20
  • 447

采用.bat文件在windows下运行java

基于我们刚刚完成的一个项目的运行文件来解释。这个文件要放在classes目录下。 path %path% java -Xmx256m -Djava.ext.dirs=..\lib com.ait.li.test.SendMessage pause 第1行 指定当前路径为默认路径 第2行...
  • shirenfeigui
  • shirenfeigui
  • 2012-04-13 13:03
  • 4511

Java 实现二进制中1的个数

题目:实现一个函数,输入一个整数,输出该数二进制中的1的个数。例如把9表示成二进制是1001,有2位是1,因此如果输入9,该函数输出2。
  • sinat_32393077
  • sinat_32393077
  • 2017-07-04 11:50
  • 86

多少个1组成的整数可以被2016整除?

#include void main (){ int i=4; int j=1111; while(j!=0){ j=j*10+1; j=j%2016; i=i+1; } printf("%d\n",i); } 问了一个同学简单给我讲了一下:类似于100/...
  • Kansas_Jason
  • Kansas_Jason
  • 2016-09-04 09:20
  • 266
    个人资料
    • 访问:808979次
    • 积分:7187
    • 等级:
    • 排名:第3744名
    • 原创:88篇
    • 转载:1篇
    • 译文:0篇
    • 评论:111条
    博客专栏
    最新评论
    百度统计