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 = a
、if ""1 == ""1
这种判断的结果都是 true。
但是判断表达式 ==
的左右两边的字符串不能有空格,除非使用引号括起来。
假如有这么一个脚本 test.bat
:
1 | if "%1" == "" (echo true) else (echo false) |
那么有几种执行的可能:
1 | > test.bat |
可以看到,当输入的参数需要包含空格的时候,需要使用引号引起来,但是这么一来,真正执行的时候就会变成 if ""1 2"" == "" (echo true) else (echo false)
,这样一来 ==
运算符左边就被空格分开了。
所以,需要使用两个双引号应对这种情况,需要把脚本改为:
1 | if """%1"" == """" (echo true) else (echo false) |
关闭当前 CMD 窗口
1 | exit |
参考资料
- Windows 批处理 (cmd/bat) 常用命令小结
- Windows 命令 | Microsoft Docs
- cmd批处理常用符号详解 DOS/BAT_脚本之家
- windows批处理命令教程_DOS/BAT_脚本之家
- What is Copy Con? - Computer Hope
- Meaning con for DOS
- Escaping Double Quotes in Batch Script
- What is the proper way to test if a parameter is empty in a batch file?
- command line - BAT file: Open new cmd window and enter code in there - Stack Overflow
- Split long commands in multiple lines through Windows batch file - Stack Overflow
- timeout - How to sleep for five seconds in a batch file/cmd - Stack Overflow | windows - How to sleep in a batch file? - Server Fault