概述
后缀为bat或cmd的文件就是window下命令行可以执行的脚本了,一般称为批处理脚本,类似于Linux系统下的shell脚本。利用它,我们可以快速实现一些简易功能。
常用指令
书写bat文件,想要双击bat后窗口继续保留,可在末尾加上:
cmd /k
cmd /k
是执行完dir命令后不关闭命令窗口
调用外部bat文件:
call b.bat
执行结束暂停
pause
: 代表批处理标签引导符,用于goto到特定标签
START 启动另一个窗口来运行指定的程序或命令。
start a.bat
指定工作目录执行
start cmd /k "d: && dir"
call cmd /k "d: && dir"
变量
设置全局变量(不要在名称和值之间使用空格,SET覆盖任何现有变量):
set a=1
Set /A 开关支持算数操作
SET /A four=2+2
4
输出变量:
echo %a%
获取参数变量:
echo %0
echo %1
动态变量:
%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号。
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
%HIGHESTNUMANODENUMBER% - 扩展到此计算机上的最高 NUMA 节点号。
特殊变量:
%~dp0:代表的是脚本文件在磁盘的位置
%~dpI 第I个文件路径参数的完整父级路径
%~nxI 第I个文件路径参数的文件名(包括扩展名)
%~nI 第I个文件路径参数的文件名(不包括扩展名)
~用法:
%~1:当参数以引号开头时,%~1会自动将引号删除。
%1:当参数以引号开头时,%1不会自动将引号删除。
注释
-
官方推荐:REM (Remark) 关键字。
REM This is a comment!
-
使用 ::,两个冒号。
:: This is also a comment too! (usually!!)
有几个地方 :: 会导致错误。比如,一个 for 循环中使用 :: 就会导致错误。如果有这种情况,只需要换回 REM 即可。
回显
回显就是执行命令前的"C:Users"这种东西
关闭回显:
echo off
开启回显
echo on
@:作用是后面接的命令关闭回显
@echo a
a
丢弃输出
echo a > NUL
逻辑
检查文件或文件夹是否存在:
if语句:
IF EXIST "a.txt" echo found
IF NOT EXIST "temp.txt" ECHO not found
If 和 Else 语句:
IF EXIST "temp.txt" (
ECHO found
) ELSE (
ECHO not found
)
检查变量是否与字符串匹配
SET var=Hello, World!
IF "%var%"=="Hello, World!" (
ECHO found
)
不区分大小写来比较:
SET var=Hello, World!
IF /I "%var%"=="hello, world!" (
ECHO found
)
读取用户输入
set /p var="prompt"
set /p confirm="please confirm:"
echo %confirm%
||和&&的用法:
使用&&连接的两条命令,当第一条执行成功之后(%ERRORLEVEL%是0),紧接着会执行第二条命令。
DIR myfile.txt >NUL 2>&1 && TYPE myfile.txt
||则相反,当第一条命令执行失败后,执行第二条命令。
DIR myfile.txt >NUL 2>&1 || CALL :WARNING file not found - myfile.txt
也可以把这两个技巧结合起来使用,通过()来构造,当第一条执行失败后,执行()中的两条语句。
DIR myfile.txt >NUL 2>&1 || (ECHO %me%: WARNING - file not found - myfile.txt >2 && EXIT /B 1)
退出
EXIT
退出 CMD.EXE 程序(命令翻译程序)或当前批处理脚本。
EXIT [/B] [exitCode]
/B 指定要退出当前批处理脚本而不是 CMD.EXE。如果从一个批处理脚本外执行,则会退出 CMD.EXE
exitCode 指定一个数字号码。如果指定了 /B,将 ERRORLEVEL设成那个数字。如果退出 CMD.EXE,则用那个数字设置过程退出代码。
字符串操作
拼接:
直接放在一起即可
set aa=aabbcc
set bb=ddeeff
echo %aa%%bb%
截取:
set testStr=abcdefghijklmnopqrstuvwxyz0123456789
echo 原始字符串 %testStr%
echo 提取前五个字符串:%testStr:~0,5%
echo 提取最后五个字符串:%testStr:~-5%
echo 提取第一个到倒数第六个字符串:%testStr:~0,-5%
echo 提取五个字符串,从第四个字符开始:%testStr:~3,5%
替换:
set repStr=aaabbbcccdddeeefff
echo 替换之前:%repStr%
echo 替换后:%repStr:aa=zz%
例子
快速启动elasticsearch相关程序:
:: 启动elasticsearch
start cmd /k "d: && cd D:InstallDirelkelasticsearch-7.9.3-windows-x86_64elasticsearch-7.9.3bin && D:InstallDirelkelasticsearch-7.9.3-windows-x86_64elasticsearch-7.9.3binelasticsearch.bat"
echo "started elastic-search"
:: 启动elasticsearch-head
start cmd /k "d: && cd D:InstallDirelkelasticsearch-head && npm run start"
echo "started elasticsearch-head"
:: 启动kibana
start cmd /k "d: && cd D:InstallDirelkkibana-7.9.3-windows-x86_64bin && D:InstallDirelkkibana-7.9.3-windows-x86_64binkibana.bat"
echo "started kibana"
echo on
cmd /k
附录
命令列表
ASSOC 显示或修改文件扩展名关联。
AT 计划在计算机上运行的命令和程序。
ATTRIB 显示或更改文件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
CACLS 显示或修改文件的访问控制列表(ACLs)。
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。您不能转换当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKCOMP 比较两个软盘的内容。
DISKCOPY 将一个软盘的内容复制到另一个软盘。
DOSKEY 编辑命令行、调用 Windows 命令并创建宏。
ECHO 显示消息,或将命令回显打开或关上。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除至少一个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个或两套文件,并显示不同处。
FIND 在文件中搜索文字字符串。
FINDSTR 在文件中搜索字符串。
FOR 为一套文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便跟 Windows 使用。
FTYPE 显示或修改用于文件扩展名关联的文件类型。
GOTO 将 Windows 命令解释程序指向批处理程序中某个标明的行。
GRAFTABL 启用 Windows 来以图像模式显示扩展字符集。
HELP 提供 Windows 命令的帮助信息。
IF 执行批处理程序中的条件性处理。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建目录。
MKDIR 创建目录。
MODE 配置系统设备。
MORE 一次显示一个结果屏幕。
MOVE 将文件从一个目录移到另一个目录。
PATH 显示或设置可执行文件的搜索路径。
PAUSE 暂停批文件的处理并显示消息。
POPD 还原 PUSHD 保存的当前目录的上一个值。
PRINT 打印文本文件。
PROMPT 更改 Windows 命令提示符。
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
RECOVER 从有问题的磁盘恢复可读信息。
REM 记录批文件或 CONFIG.SYS 中的注释。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替换文件。
RMDIR 删除目录。
SET 显示、设置或删除 Windows 环境变量。
SETLOCAL 开始批文件中环境更改的本地化。
SHIFT 更换批文件中可替换参数的位置。
SORT 对输入进行分类。
START 启动另一个窗口来运行指定的程序或命令。
SUBST 将路径跟一个驱动器号关联。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TREE 以图形模式显示驱动器或路径的目录结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 版本。
VERIFY 告诉 Windows 是否验证文件是否已正确写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树。
发表评论