文章字数:1850,阅读全文大约需要7分钟
bat是windows的dos界面下对于各种命令操作的一中批处理语言,可以作为胶水语言连接其他语言,也可以处理简单的操作以及执行操作系统命令。
普通文本文件后缀改成.bat
就可以成为批处理文件
注释
REM xxx
:: xxx
基础美观操作
title newTitle
设置标题color 01
设置颜色,0是黑色背景,1是蓝色前景。其他搭配见color /?
mode con cols=113 lines=15 & color 9f
设置列113、行15、颜色9fpause
暂停,提示任意输入继续
#转义
,
相当空格^
转义字符命令1;命令2
报错后会继续执行
基础输入输出
echo "你想说什么"
输出文字echo off
关闭c:\user>_ 的前缀及其他提示,只留下光标echo on
恢复回显@echo off
连自身的命令回显都不要echo.
输出空行,换行echo "somethine">filename
把信息写入文件(覆盖)echo "somethine">>filename
把信息写入文件(追加)echo (Ctrl+G)
喇叭鸣响,对个ctrl+G可响多次%0 %1 %2
调用批处理时传的参数,%0
自身%1
第1个例:复制自身
copy %0 d:\wind.bat
set /p choice= 输入一个字符:
获取输入
组合命令
第一个命令|第二个命令
管道命令,第一个的输出当成第二个的输入。例:
dir c:\|find “txt”
命令一&命令二
组合执行等于1
2
3
4(
命令一
命令二
)&& 和 ||
同java短路
循环for
for %%i in (set) do somthing
有/d /l /r /f 四个属性
/D属性
for /d %%i in (c:\*) do echo %%i
搜索C盘下的文件for /d %%i in (???) do echo %%i
搜索当前目录下有1-3个字母的文件
/R属性
FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]
/r后制定根目录,遍历目录树,如果没有路径默认当前目录。set为匹配规则for /r c:\ %%i in (*.exe) do echo %%i
找c盘下的exe文件
/L属性
for /l %%i in (0,2,6) do @echo %%i
从0开始,每次加2,直到6.
/F属性
FOR /F “eol=; tokens=1,3* delims=,- ” %%i in (test.txt) do echo %%i %%j %%k
处理文件test.txt1
2
3eol=; 分号开头的行为注释行
tokens=1,3* 将每行第1段,第3段和剩余字段分别赋予变量%%i,%%j,%%k
delims=,- (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后循环if
- 判断
1
2
3
4
5
6set /p p=请输入
if %p% LEQ 9 (
echo %p%
) else (
echo 9
) - 关系符
含义 | 关系符 | ||
---|---|---|---|
等于 | equ | ||
大于 | gtr | ||
大于或等于 | geq | ||
小于 | lss | ||
小于或等于 | leq | ||
不等于 | neq | ||
- 存在 | |||
|
|||
- 不存在 | |||
|
|||
# 跳转 | |||
- :start 标注一个叫start的点 |
|||
- GOTO start 跳转到start |
文件关联
assoc
设置’文件扩展名’关联,关联到’文件类型’ftype
设置’文件类型’关联,关联到’执行程序和参数’assoc
显示所有’文件扩展名’关联assoc .txt
显示.txt代表的’文件类型’,结果显示 .txt=txtfileassoc .doc
显示.doc代表的’文件类型’,结果显示 .doc=Word.Document.8assoc .exe
显示.exe代表的’文件类型’,结果显示 .exe=exefileftype
显示所有’文件类型’关联ftype exefile
显示exefile类型关联的命令行,结果显示 exefile=”%1” %*assoc .txt=Word.Document.8
设置.txt为word类型的文档,可以看到.txt文件的图标都变了
ftype exefile=”%1” %*
恢复 exefile 的正确关联
如果该关联已经被破坏,可以运行 command.com ,再输入这条命令
变量延迟
1 | @echo off |
文件权限
1 | ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[drive:] [path] filename] [/S [/D]] |
系统变量
%ALLUSERSPROFILE%
本地 返回“所有用户”配置文件的位置。%APPDATA%
本地 返回默认情况下应用程序存储数据的位置。%CD%
本地 返回当前目录字符串。%CMDCMDLINE%
本地 返回用来启动当前的 Cmd.exe 的准确命令行。%CMDEXTVERSION%
系统 返回当前的“命令处理程序扩展”的版本号。%COMPUTERNAME%
系统 返回计算机的名称。%COMSPEC%
系统 返回命令行解释器可执行程序的准确路径。%DATE%
系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关
date 命令的详细信息,请参阅 Date。%ERRORLEVEL%
系统 返回上一条命令的错误代码。通常用非零值表示错误。%HOMEDRIVE%
系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。%HOMEPATH%
系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。%HOMESHARE%
系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。%LOGONSERVER%
本地 返回验证当前登录会话的域控制器的名称。%NUMBER_OF_PROCESSORS%
系统 指定安装在计算机上的处理器的数目。%OS%
系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。%PATH%
系统 指定可执行文件的搜索路径。%PATHEXT%
系统 返回操作系统认为可执行的文件扩展名的列表。%PROCESSOR_ARCHITECTURE%
系统 返回处理器的芯片体系结构。值:x86 或 IA64 基于Itanium%PROCESSOR_IDENTFIER%
系统 返回处理器说明。%PROCESSOR_LEVEL%
系统 返回计算机上安装的处理器的型号。%PROCESSOR_REVISION%
系统 返回处理器的版本号。%PROMPT%
本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。%RANDOM%
系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。%SYSTEMDRIVE%
系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。%SYSTEMROOT%
系统 返回 Windows server operating system 根目录的位置。%TEMP%
和%TMP%
系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。%TIME%
系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关
time 命令的详细信息,请参阅 Time。%USERDOMAIN%
本地 返回包含用户帐户的域的名称。%USERNAME%
本地 返回当前登录的用户的名称。%USERPROFILE%
本地 返回当前用户的配置文件的位置。%WINDIR%
系统 返回操作系统目录的位置。
自动ftp下载
ftp -n -s:[[drive:]path]filename
filename文件内容
1 | open 90.52.8.3 #打开ip |
通过ping实现延迟,完成进度条
1 | @echo off |
随机数
生成5个100以内的随机数
1 | @echo off |