Windows下不区分大小写!
Batch:
batch -- 批处理;
batch file -- 批处理文件;
DOS批处理;
由DOS或者Windows内嵌命令解释器(如cmd.exe)解释执行;
类似Unix中的shell脚本;
在批处理中,不仅可以使用系统本身提供的命令,还能使用已安装的第三方提供的工具或软件;
一般情况下,每条命令占一行,当然也可以将多条命令用特定符号(&,&&,|,||)分隔后写到同一行;
系统在解释运行批处理程序时,首先扫描整个批处理程序,然后从第一行代码开始详细逐句执行所有命令,直至程序结尾或遇见 exit 命令或出错意外退出。
基础批处理命令:
echo #打开或关闭回显;
rem #注释命令;
pause #暂停命令;
call #从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序;
start #调用外部程序,所有的 dos命令 都可以由start命令来调用;
goto #跳转命令;
set #显示、设置或删除变量;
批处理常用符号
回显屏蔽 @
输出重定向 > 与 >>
输入重定向 <
管道符号 |
转义符 ^
逻辑命令符 & && ||
&,无条件执行&后面的命令;
&&,当&&前面的命令成功后才执行&&后面的命令,否则不执行;
||,当 || 前面的命令失败时,才执行 || 后面的命令,否则不执行;
基础 dos 命令
文件操作系统
vol
lable
文件夹管理
cd
md/mkdir
rd/rmdir
dir
tree
path
xcopy
文件管理
type
copy
del/erase
move
ren/rename
replace
attrib
find
fc
网络相关
ping
ftp
net
telnet
ipconfig
msg
arp
系统管理
at
shutdown
tskill
taskkill
tasklist
sc
reg
powercfg
其他命令
cls
assoc
ftype
对于以上列出的命令,cmd中,在命令后面 /? 即可查看该命令的帮助信息。
批处理命令用法:
echo和@回显控制命令
echo #关闭单行回显;
echo off #从下一行开始关闭回显;
@echo off #从本行开始关闭回显,一般批处理第一行都是这个;
echo on #从下一行开始打开回显;
echo #显示当前是 echo on 还是 echo off ;
echo. #输出一个“回车换行”;
echo hello world #输出 hello world
#关闭回显 是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开
errorlevel程序返回码
echo %errorlevel% #查看返回码的值
#执行成功默认为 0;一般命令执行出错为 1
dir显示目录的文件和子目录列表
dir
dir /a #列出所有文件和目录,包括隐藏文件;
dir d: #列出D盘;
dir d: /A:d #列出D盘中的目录;
#/A:属性
/A 显示具有指定属性的文件。
#属性
D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 I 无内容索引文件
L 解析点 - 表示“否”的前缀
type显示文件内容
type d:\hello.txt
title
title HelloWorld
#设置cmd窗口的标题
date和time
date #显示并修改日期
time #显示并修改时间
goto 和 :
:label
goto label #跳转到指定的标签,并从标签后一条命令开始执行批处理程序
find(外部命令)
find “abc” d:\hello.txt
tasklist | find /i "qq.exe"
#成功则errorlevel为0,如果找不到,则设置为1
%0 %1 %2 %3 %4 %5...%*
命令行传递给批处理的参数,类似shell中$0,$1...
%0 批处理文件本身
%1 第一个参数
%* 从第一个参数开始的所有参数
批参数(%n)的替代已被增强
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串
可以组合修订符来取得多重结果
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1并扩展到找到的第一个文件的驱动器号和路径
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行
if命令
if "%1"=="/a" echo 第一个参数是/a
if /i "%1" equ "/a"
if exist f:\hello.txt (
echo 存在
)else(
echo 不存在
)
setlocal和endlocal
设置"命令扩展名"和"延缓环境变量扩充"
setlocal enableextensions #启用命令扩展名
setlocal disableextensions
setlocal enabledelayedexpansion #启用延缓环境变量
setlocal disabledelayedexpansion
endlocal #恢复到使用setlocal语句前的状态
set设置变量
引用变量可在变量前加 %,即 %变量名%
set #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用
set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
set p=aa1bb1aa2bb2 #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
echo %p% #显示变量p代表的字符串,即aa1bb1aa2bb2
echo %p:~6% #显示变量p中第6个字符以后的所有字符,即aa2bb2
echo %p:~6,3% #显示第6个字符以后的3个字符,即aa2
echo %p:~0,3% #显示前3个字符,即aa1
echo %p:~-2% #显示最后面的2个字符,即b2
echo %p:~0,-2% #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
echo %p:aa=c% #用c替换变量p中所有的aa,即显示c1bb1c2bb2
echo %p:aa=% #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
echo %p:*bb=c% #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
set p=%p:*bb=c% #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
set /a p=39 #设置p为数值型变量,值为39
set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3
set /a p=p/10 #用 /a 参数时,在 = 后面的变量可以不加%直接引用
set /a p=”1&0″ #”与”运算,要加引号。其它支持的运算符参见set/?
set p= #取消p变量
set /p p=请输入
一些动态变量
%SystemDrive% #系统盘符
%CD% #代表当前目录的字符串
%DATE% #当前日期
%TIME% #当前时间
%RANDOM% #随机整数,介于0~32767
%ERRORLEVEL% #当前 ERRORLEVEL 值
%CMDEXTVERSION% #当前命令处理器扩展名版本号
%CMDCMDLINE% #调用命令处理器的原始命令行
start命令
批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令
call命令
批处理中调用另一个批处理的命令,否则剩下的批处理指令将不会被执行
choice选择命令
让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234...
for循环命令
for %%i in (c: d: e: f:) do echo %%i
for /?
subst(外部命令)
映射磁盘
subst #显示目前所有的映射
subst z: serverd #这样就可以访问serverd了
xcopy(外部命令)
文件拷贝
xcopy e:mp3 f:mpe /s/e/i/y
检测Windows下某个进程是否存活,不存活则执行,并把它写入Windows任务计划中。
tasklist | find /i "mongod.exe"
if errorlevel 1 (
start "" "f:\mongostart.bat"
)
Windows任务计划
创建基本任务
单位是天,时分秒的话,在最后创建好计划任务后进入计划任务属性去修改!