BAT
批处理文件批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件, 由一系列命令构成,其中可以包含对其他程序的调用。 这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad) 等任何文本文件编辑工具创建和修改批处理文件。
更有趣味性
更加系统,相对缺乏趣味性。
Hello world
创建一个文件 baiduping.bat
,notepad 打开。内容如下:
ping baidu.com >> baiduping.txt
双击运行。可以在统计目录下发现文件 baiduping.txt
,测试内容如下:
正在 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
- Ctrl+C 组合键可强行终止一个批处理的执行过程。
(TODO: 以下暂时列出目录,具体内容尚未补充。)
常用批处理内部命令简介
批处理的常见命令(未列举的命令还比较多,请查阅帮助信息)
在命令行输入,可以查阅对应 name 命令行的文本解释。
name /?
常见命令
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 显示或更改文件属性
常用特殊符号
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命令中的变量
- 变量
~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
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
:: 用于提交当前变更(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…