Windows 批处理命令(bat)学习

查看帮助

在命令后边输入 /? 可以查看命令帮助。

例:

1
copy /?

关于区分大小写

批处理命令本身是不区分大小写的,但是变量可能要区分大小写。

copy con 命令

应该是代表 copy console 的意思。直接在命令行中编写并保存文件。

使用方法:

1
copy con [file_name]

例:

1
copy con test.txt

输入命令之后会另起一行,然后开始输入内容,需要换行时可以使用回车键换行。输入完成之后按 ctrl + Z 然后按回车完成编辑并保存。还有另外一种保存方法,输入完成之后直接按 ctrl + C

输入 copy con [file_name] 之后,如果当前目录下有同名文件,那么仍然会进入编辑状态,但是按一次回车之后命令行会询问是否覆盖文件,选择 No 的话就会退出编辑。选择 Yes 的话就会继续维持编辑状态,然后编辑完成之后保存退出。

其实执行 copy con [file_name] 命令并输入一行之后,文件会自动保存,但是如果刚刚输入命令还没有进行输入,可以按 ctrl + C 取消创建文件。

变量和 set 命令

为什么 tomcat 的启动脚本中使用两个双引号

为什么使用 if ""%1"" == """"

batch 中的判断都是基于字符串判断的,也就是说:

if a = aif ""1 == ""1 这种判断的结果都是 true。

但是判断表达式 == 的左右两边的字符串不能有空格,除非使用引号括起来。

假如有这么一个脚本 test.bat

1
if "%1" == "" (echo true) else (echo false)

那么有几种执行的可能:

1
2
3
4
5
6
> test.bat
true
> test.bat 1
false
> test.bat "1 2"
此时不应有 2""。

可以看到,当输入的参数需要包含空格的时候,需要使用引号引起来,但是这么一来,真正执行的时候就会变成 if ""1 2"" == "" (echo true) else (echo false),这样一来 == 运算符左边就被空格分开了。

所以,需要使用两个双引号应对这种情况,需要把脚本改为:

1
if """%1"" == """" (echo true) else (echo false)

关闭当前 CMD 窗口

1
exit

参考资料

  1. Windows 批处理 (cmd/bat) 常用命令小结
  2. Windows 命令 | Microsoft Docs
  3. cmd批处理常用符号详解 DOS/BAT_脚本之家
  4. windows批处理命令教程DOS/BAT脚本之家
  5. What is Copy Con? - Computer Hope
  6. Meaning con for DOS
  7. Escaping Double Quotes in Batch Script
  8. What is the proper way to test if a parameter is empty in a batch file?
  9. command line - BAT file: Open new cmd window and enter code in there - Stack Overflow
  10. Split long commands in multiple lines through Windows batch file - Stack Overflow
  11. timeout - How to sleep for five seconds in a batch file/cmd - Stack Overflow | windows - How to sleep in a batch file? - Server Fault