文章字数: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.batset /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 |