BAT

批处理文件批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件, 由一系列命令构成,其中可以包含对其他程序的调用。 这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad) 等任何文本文件编辑工具创建和修改批处理文件。

windows批处理教程

更有趣味性

BAT批处理脚本教程

更加系统,相对缺乏趣味性。

Hello world

创建一个文件 baiduping.bat,notepad 打开。内容如下:

  [bat]
1
ping baidu.com >> baiduping.txt

双击运行。可以在统计目录下发现文件 baiduping.txt,测试内容如下:

  [plaintext]
1
2
3
4
5
6
7
8
9
10
正在 Ping baidu.com [111.13.101.208] 具有 32 字节的数据: 来自 111.13.101.208 的回复: 字节=32 时间=37ms TTL=50 来自 111.13.101.208 的回复: 字节=32 时间=32ms TTL=50 来自 111.13.101.208 的回复: 字节=32 时间=25ms TTL=50 来自 111.13.101.208 的回复: 字节=32 时间=26ms TTL=50 111.13.101.208 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 25ms,最长 = 37ms,平均 = 30ms

  1. Ctrl+C 组合键可强行终止一个批处理的执行过程。

(TODO: 以下暂时列出目录,具体内容尚未补充。)

常用批处理内部命令简介

批处理的常见命令(未列举的命令还比较多,请查阅帮助信息)

在命令行输入,可以查阅对应 name 命令行的文本解释。

  [plaintext]
1
name /?

常见命令

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ftype 12、pushd 和 popd 13、CALL 14、shift 15、IF 16、setlocal 与 变量延迟 17、ATTRIB 显示或更改文件属性

常用特殊符号

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1、@ 命令行回显屏蔽符 2、% 批处理变量引导符 3、> 重定向符 4、>> 重定向符 5、<、>&、<& 重定向符 6、| 命令管道符 7、^ 转义字符 8、& 组合命令 9、&& 组合命令 10、|| 组合命令 11、"" 字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 16、批处理中可能会见到的其它特殊标记符: (略) CR(0D) 命令行结束符 Escape(1B) ANSI转义字符引导符 Space(20) 常用的参数界定符 Tab(09) ; = 不常用的参数界定符 + COPY命令文件连接符 * ? 文件通配符 / 参数开关引导符 : 批处理标签引导符

DOS循环:for命令详解

FOR命令中的变量

  • 变量
  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
~I - 删除任何引号("),扩展 %I %~fI - 将 %I 扩展到一个完全合格的路径名 %~dI - 仅将 %I 扩展到一个驱动器号 %~pI - 仅将 %I 扩展到一个路径 %~nI - 仅将 %I 扩展到一个文件名 %~xI - 仅将 %I 扩展到一个文件扩展名 %~sI - 扩展的路径只含有短名 %~aI - 将 %I 扩展到文件的文件属性 %~tI - 将 %I 扩展到文件的日期/时间 %~zI - 将 %I 扩展到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩展到 空字符串

Util

  • CmdUtil.java
  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.ryo.bat.util.util; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * 命令行工具类 * Created by bbhou on 2017/7/27. */ public final class CmdUtil { private static final Logger LOG = LogManager.getLogger(CmdUtil.class); /** * 执行cmd命令行 * @param cmdFilePath cmd 文件路径 * @since 1.7 */ public static void execute(final String cmdFilePath) throws IOException, InterruptedException { try{ //抛出io异常 Process process=Runtime.getRuntime().exec(cmdFilePath); //返回输入流 InputStream in=process.getInputStream(); //封装输入流 BufferedReader reader=new BufferedReader(new InputStreamReader(in)); String line=null; //逐行读取信息 while((line=reader.readLine())!=null){ System.out.println(line); } reader.close();//关流 process.waitFor(); process.destroy();//抛出InterruptedExeption异常 }catch(IOException | InterruptedException e){ e.printStackTrace(); } } private CmdUtil(){} }

简单的 bat 命令

上传 git

  [bat]
1
2
3
4
5
6
7
8
9
:: 用于提交当前变更(windows) :: author: houbb :: LastUpdateTime: 2018-11-22 09:08:52 :: 用法:双击运行,或者当前路径 cmd 直接输入 .\cgit.bat git add . git commit -m "[Feature] add for new" git push git status

指定参数

TODO…

参考资料

批处理中使用命令行传递给批处理参数