目录
.bat
基本语法
注意事项:move copy等这种余目录相关命令,如果目录名字货文件名字中带有空格,应该加双引号,如:
MOVE /Y pcl_d.txt “C:\Program Files\PCL 1.11.1”
一、基础语法:
1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。
2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
3.批处理的编程能力远不如C语言等编程语言,也十分不规范。
4.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。
5.C:\AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。
6.大小写不敏感(命令符忽略大小写)
7.批处理的文件扩展名为 .bat 或 .cmd。
8.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
详细介绍请参考文献:https://www.cnblogs.com/niuxiaohao/archive/2011/03/17/1986845.html
栗子
%0~%9:命令参数的引用
call (echo %1 ) “para1”
help:命令帮助
help type (显示跟“type /?”一样)
echo:打印输出信息
echo on
echo off
echo “hello word”
@ 命令 :不显示该行命令
不显示@后面的命令
@echo hello
Goto 命令:跳转
跳转到标签行执行,标签标志位:开头
@echo off
:begin
copy a:. d:\back
echo Please put a new disk into driver A
pause
goto begin
Call 命令:调用另一个批处理程序,并且不终止父批处理程序
调用另一个批处理程序,并且不终止父批处理程序
call test.bat “para1”
start 命令:调用外部程序
调用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 来调用。
start /MIN test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他,且本窗口最小化)
start e:“program files”\极品列车时刻表\jpskb.exe (文件路径名有空格时)
If else 命令
if “%1” == “a” format a:
if {%1} == {} goto noparms
if exist config.sys edit config.sys (表示如果存在这文件,则编辑它,用很难看的系统编辑器)
if exist config.sys type config.sys (表示如果存在这文件,则显示它的内容)
@echo off
XCOPY F:\test.bat D:
IF ERRORLEVEL 1 (ECHO 文件拷贝失败
) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件
pause
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^
else (echo comment3 )
比较运算符:
EQU - 等于 (一般使用“==”)
NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
choice /c:dme defrag,mem,end
for 命令
1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。
for %%c in (*.bat *.txt) do (echo %%c)
a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。
for /D %%a in (*e* *i*) do echo %%a
b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。
for /R E:\test %%b in (*.txt *.bat) do echo %%b
for /r %%c in (*) do (echo %%c) :: 遍历当前目录下所有文件
c. 如下命令行将产生序列 1 2 3 4 5
for /L %%c in (1,1,5) do echo %%c
d. 以下两句,显示当前的年月日和时间
For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日
For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j时%%k分
e. 把记事本中的内容每一行前面去掉8个字符
setlocal enabledelayedexpansion
for /f %%i in (zhidian.txt) do (
set atmp=%%i
set atmp=!atmp:~8!
if {!atmp!}=={} ( echo.) else echo !atmp!
)
:: 读取记事本里的内容(使用 delims 是为了把一行显示全,否则会以空格为分隔符)
for /f "delims=" %%a in (zhidian.txt) do echo.%%a
- continue 和 break
利用 goto 实现程序中常用的 continue 和 break 命令, 其实非常简单
continue: 在 for 循环的最后一行写上一个标签,跳转到这位置即可
break: 在 for 循环的外面的下一句写上一个标签,跳转到这位置即可
Sample: (伪代码)
for /F [“options”] %variable IN (command) DO (
… do command …
if … goto continue
if … goto break
… do command …
:continue
)
:break
其它命令:ping,telnet,color,exit,shutdown
-
ping 命令
测试网络联接状况以及信息包发送和接收状况。但是不能够测试端口。
语法:ping IP地址或主机名 [-t] [-a] [-n count] [-l size]
参数含义:
-t 不停地向目标主机发送数据;
-a 以IP地址格式来显示目标主机的网络地址;
-n count 指定要Ping多少次,具体次数由count来指定;
-l size 指定发送到目标主机的数据包的大小。
Sample: ping 192.168.0.1 -t (不停的测试192.168.0.1,按ctrl+c停止)
Sample: for /L %%a in (0,1,255) do ping 192.168.0.%%a -n 1 >> tmp.txt (ping一下所有的局域网电脑) -
telnet 命令
测试端口使用 telnet IP地址或主机名 端口,使用tcp协议的
Sample: telnet 192.168.0.1 80 (测试192.168.0.1的80端口)
3.color 命令
设置背景及字体颜色
语法: color bf
b 是指定背景色的十六进制数字; f 指定前景颜色(即字体颜色)。
颜色值: 0:黑色 1:蓝色 2:绿色 3:湖蓝 4:红色 5:紫色 6:黄色 7:白色
8:灰色 9:淡蓝 A:淡绿 B:浅绿 C:淡红 D:淡紫 E:淡黄 F:亮白
如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。
如果两参数一样,视为无效输入。只有一个参数时,设置字体。
-
random 命令
产生随机数(正整数0~) -
exit 命令
结束程序。即时是被调用的程序,结束后也不会返回原程序 -
shutdown命令
shutdown -s 关机
文件处理
1.删除
1) 删除一个文件或多个文件
del /s /q /f d:\test\a.bat
将直接删除d:\test\a.bat,没有任务提示
del temp* /q /f /s
将直接删除 本目录的 temp 目录的所有文件,没有任务提示
删除文件的时候可以使用“*”作通配符
2) 删除一个空目录
rd /q /s d:\test\log
将直接删除d:\test\log目录,如果log目录里面有文件将无法删除
3) 删除一个非空目录 (必须指定目录名称)
rmdir /q /s d:\test\logs
必须指定目录名称,不能使用通配符
/S 除目录本身外,还将删除指定目录下的所有子目录
/Q 安静模式,带 /S 删除目录树时不要求确认
无论里面是否有文件或文件夹将全部直接删除
2.创建目录
MKDIR [drive:]path
MD [drive:]path
路径有空格时,可以用双引号括起来,也可以用 替代
使用例子
- copy C:\test*.* D:\back (复制C盘test文件夹的所有文件(不包括文件夹及子文件夹里的东西)到D盘的back文件夹)
- dir c:*.* > a.txt (将c盘文件列表写入 a.txt 中)
- 符号 > 生成文件并写入内容(如果有这文件则覆盖), >> 文件里追加内容
- md d:\aa (创建文件夹)
- 等待用户输入: set /p 变量名=屏幕显示信息。 Sample:set /p pass=请输入密码:
- 让用户按回车退出
小技巧(替代pause),文件的最后一句:set /p tmp=操作结束,请按回车键退出 - 清屏: cls
- 查看自己的IP:
for /f “tokens=15” %%i in (‘ipconfig ^| find /i “ip address”’) do set ip=%%i
echo %ip% (这时的 %ip% 就是自己的IP地址) - 修改文件的更新日期
copy 文件名+,>nul (修改为当前时间,如果要修改为指定时间,先修改系统时间,再改回系统时间) - ren C:\test*.jpg .JPG
for /r %%c in (.jpg) do (ren %%c *.JPG) :: 修改当前目录下的所有文件的后缀名,包括子目录的 - 修改文件的文件名
rename test.jpg test2.JPG
rename *.jpg *.888.JPG - start iexplore.exe http://www.baidu.com
- 显示txt中的每一行
for /f “delims=” %%a in (pcl_r.txt) do echo.%%a
更多使用例子请参考:
https://www.cnblogs.com/niuxiaohao/archive/2011/03/17/1986845.html
本文详细介绍了批处理命令的基本语法和常见用法,包括条件判断、循环控制、文件处理等核心内容,并提供了丰富的示例。
2652

被折叠的 条评论
为什么被折叠?



