批处理 笔记

1. > 和 >>
>    表示新生成一个文件
>>    表示附加到文件
ping sz.tencent.com > a.txt
ping sz1.tencent.com >> a.txt

2. if else 语句
循环调用,只要文件一直存在就进行删除
@echo off
if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif
a.bat

3. 检查某端口是否打开
@echo off
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit

4. 注释
REM 和 :: 均可以作为注释
:label , goto label
:: , :+ 由于:后都是非字母非数字,因此都可以作为注释使用(goto不识别)
Rem 后的字符可以回显,而::后的字符无论echo on/off 均不回显

5. @ 字符  ECHO
5.1 @的作用
@字符放在命令前将关闭该命令回显,无论此时echo是否为打开状态
5.2 echo 回显设置
echo on : 打开回显功能
echo off : 关闭回显功能
5.3 输出提示信息
echo 信息内容
5.4 输出空行(相当于回车)
ECHO.
5.5 echo 的其他用法
echo. | time
在time输出后输入回车,这样自动回到dos的提示状态
5.5.1 echo 答复语|命令
ECHO Y|CHKDSK /F 在人机对话中使用Y作为回答
ECHO Y|DEL A:\*.*
5.6 建立新文件或是增加文件内容
echo 文件内容>文件名 (new)
echo 文件内容>>文件名 (append)
5.7 向打印机输出打印内容或打印控制码
(无用;略)
5.8 使用beep (使喇叭鸣响)
echo ^G (^G可用Ctrl+G或是 alt + 007输入)

6. pause
运行显示:请按任意键继续
6.1 如果还需要其他提示语,可以:
echo 其他提示语 & pause >nul

7. errorlevel
程序返回码
echo %errorlevel%
每条命令运行结束,可以用这个命令格式查看返回码
用于判断刚才的命令是否执行成功
默认值为0,一般命令执行出错会设 errorlevel 为1

8. title 设置cmd窗口的标题
title 新标题

9. color
设置默认的控制台前景颜色和背景颜色
COLOR [ATTR]
attr 指定控制台输出的颜色属性
由两个十六进制数字指定,第一个为背景,第二个为前景
0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 湖蓝色 B = 淡浅绿色 4 = 红色 C = 淡红色 5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色 7 = 白色 F = 亮白色
例如: "COLOR fc" 在亮白色上产生亮红色

10. mode 配置系统设置
10.1 有较多的各种设置
10.2 这里只举例设置行列以及颜色等
mode con cols=113 lines=15 & color 9f

11. goto 和 :
跳转
if {%1}=={} goto noparms
if "%2"=="" goto noparms

12. start
调用外部程序
start explorer d:\

13 assoc 和 ftype
assoc 设置文件扩展名关联,关联到文件类型
ftype 设置文件类型关联,关联到执行程序和参数

14. pushd 和 popd
pushd 进入某目录,并保存起来
popd恢复到先前pushd的目录

@echo off c: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹
md d:\mp4 #在 D:\ 建立 mp4 文件夹
cd /d d:\mp4 #更改当前目录为 d:\mp4
pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3
popd #恢复当前目录为刚才保存的 d:\mp4

15. call
在一个批处理文件中调用另一个批处理文件,在执行完毕后接着执行原来的批处理文件。
call d:\test.bat
另一种用法是调用段内命令段
call :label arguments
调用本文件内命令段,相当于子程序。被调用的命令段以标签:lable开头
以命令 goto:eof结尾

16 参数
%*列出所有的参数(%1 %2 %3 %4 ...)
%~1 - 删除引号("),扩充 %1
%~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 的输出行。
在上面的例子中,%1 和 PATH 可以被其他有效数值替换。 %~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*使用 注意:参数扩充时不理会参数所代表的文件是否真实存在,均以当前目录进行扩展

例子
@echo off
Echo "Tmp" > tmp.txt Rem 下行先保存当前目录,再将c:\windows设为当前目录
pushd e:\mydoc
Call :sub tmp.txt Rem 下行恢复前次的当前目录
Popd
Call :sub tmp.txt
pause
rem Del tmp.txt
pause

:sub
Echo 删除引号: %~1
Echo 扩充到路径: %~f1
Echo 扩充到一个驱动器号: %~d1
Echo 扩充到一个路径: %~p1
Echo 扩充到一个文件名: %~n1
Echo 扩充到一个文件扩展名: %~x1
Echo 扩充的路径指含有短名: %~s1
Echo 扩充到文件属性: %~a1
Echo 扩充到文件的日期/时间: %~t1
Echo 扩充到文件的大小: %~z1
Echo 扩展到驱动器号和路径:%~dp1
Echo 扩展到文件名和扩展名:%~nx1
Echo 扩展到类似 DIR 的输出行:%~ftza1
Echo.
Goto :eof

set aa=123456
set cmdstr=echo %aa%
call %cmdstr%
pause
本例中如果不用call,而直接运行%cmdstr%,将显示结果%aa%,而不是123456

17. shift
如果命令扩展被启用,shift支持/n 命令行开关;该命令行开关告诉命令从第n个参数开始移位
SHIFT /2
将 %3 移位到 %2 ,将%4 移位到%3 ,%0和%1不受影响
posted @ 2011-12-20 13:21  BiG5  阅读(189)  评论(0编辑  收藏  举报