原创
由于自身原因,最近半年都在家带孩子,很久没写博客了,最近在家兼职的工作需要拷贝来拷贝去,突发兴趣,想研究一下批处理,感觉有时候用起来真的很方便。
直接新建一个文本,把后缀改成.bat 就建成了一个批处理程序,然后再用文本打开编写,找了一下发现iBat这个软件来编辑很不错,很傻瓜很方便,不会命令都能写批处理。
学习目标:能看懂Bat文件,修改文件。
DOS批处理命令是脚本语言,都是按照自上而下的流程逐行执行的,也就是说,只有第一行的命令执行了之后,才可能执行第二行,第二行执行完之后,再执行第三行。
【基础】
echo off //关闭回显,一般写在批处理开头,表示只显示命令结果,不显示执行的命令,如果前面加@,@echo off,那么这条命令本身也不显示
echo on //和上面相反
echo. //后面紧跟一个小数点,显示一条空行
echo //空格后跟文字,显示文字
rem //注释,开启回显的话会显示注释的内容
:: //注释,完全注释不显示回显
cd c:\ //跳转到C盘
/? //命令后接/?会提示用法和参数 比如 choice/?
>nul //命令最后接,不显示结果和提示
pause //暂停,显示请按任意键继续,pause>nul不显示文字
ping //后面跟IP,显示延迟
title 标题 //窗口标题栏命名
color 0A //文字绿色底黑色
exit //退出批处理程序,并且退出CMD控制台
cls //清理屏幕
errorlevel //内置错误级别变量 0没有错误 其他值错误
%0 //脚本自身
start /max "" "D:\cloudmusic.exe" //以最大窗口运行程序
echo 文字>c:\测试.txt(文字>>c:\测试.txt) // 创建txt文本 >是存在文件就覆盖 >>是存在就累加写入
【文件夹】
md (mkdir) c:\文件夹 //创建文件夹 (..\文件夹 //创建到批处理文件所在的上级目录中)
ren (rename) c:\文件夹 新名字 //重命名文件夹
rd (redir) /s /q c:\文件夹 //删除文件夹( /s 删除子目录和文件 /q 不询问 )
xcopy /e /y c:\文件夹 D:\文件夹\ //复制文件夹( /e 复制所有子目录,包括空目录。/y 覆盖文件 )
copy //复制文件夹
del //删除文件 (del 0% 删除自身)
【set】
%变量名% //%%相当于变量引用,比如echo %time% 输出当前时间
set /p aaa=请输入数字: //提示用户输入,并把值赋给aaa
set /a bbb=%aaa%*2 //执行数学运算,bbb等于aaa*2
【goto】
goto a //goto 跳转命令 a 标签名 指定跳转到标签位置继续执行脚本
:a //定义标签
echo 你是用goto命令来到标签a
goto :eof (内置的End Of File,来到程序的最后一行,相当于退出当前Bat脚本,但是不退出CMD控制台会等候下一条命令)
【if】
注意:没有else if的写法
if exists c:\学习.txt (echo 存在) ELSE (echo 不存在) //是否存在
if not exists c:\学习.txt (echo 不存在) ELSE (echo 存在) //是否不存在
【& && || |】
& 复合语句连接符,分隔一个命令行中的多个命令
&& 复合语句连接符,在 && 前的命令成功时,才执行 && 后面的命令。
|| 复合语句连接符,在 || 前的命令失败时,才执行 || 后面的命令。
| 管道符号,将|前的进程输出,当做|后进程的输入。
【延迟执行】
1.因为ping 命令是一秒执行一次 -n 代表的次数 127.1是本地网络系统回环地址127.0.0.1简写 >nul不显示ping的结果 这样就实现了延迟5秒执行
ping 127.1>nul -n 5
2.choice /t 暂停秒数 /d 到时间后选择的选项 /n 隐藏选项列表 >nul不显示结果
choice /t 5 /d y /n >nul
例子:
@echo off
rem 这是一行注释,开启回显会显示
:: 这也是一行注释,开启回显也不显示
echo.
echo 现在开始Bat基础学习
echo.
title Bat基础学习
color 0A
pause
:StartStudy
::清理屏幕
cls
echo.
echo 0.关闭Bat
echo 1.当前时间
echo 2.打开网易云音乐
echo 3.测试延迟
echo 4.创建txt文本
echo 5.文件夹操作
echo.
set /p choice=请选择练习的内容:
if %choice%==0 goto end
if %choice%==1 goto a
if %choice%==2 goto b
if %choice%==3 goto c
if %choice%==4 goto d
if %choice%==5 goto e
rem 0.关闭Bat
:end
exit
rem 1.当前时间
::表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取8位字符
:a
echo.
echo 当前时间是: %date% %time:~0,8%
echo.
pause
goto StartStudy
rem 2.打开网易云音乐
::需要修改路径
:b
echo.
start /max "" "D:\软件\CloudMusic\cloudmusic.exe"
echo.
pause
goto StartStudy
rem 3.测试延迟
:: 出现错误再次输入IP
:c
set /p ip=请输入要ping的IP:
ping %ip%
if not %errorlevel% == 0 (
echo.
echo Ping对方的IP出现错误
goto a
)
echo.
pause
goto StartStudy
rem 4.创建txt文本
:d
echo.
set /p txtPath=请输入要创建的文本路径:
set /p txtName=请输入要创建的文本名:
set /p txtContent=请输入文本内容:
echo.
echo %txtContent% >> %txtPath%/%txtName%.txt && echo 创建成功! || echo 创建失败!
echo.
pause
goto StartStudy
rem 5.文件夹操作
::需要修改路径
:e
::创建文件夹
echo.
echo 开始创建文件夹
if not exist F:\我的文件夹 (
md F:\我的文件夹 && echo F:\我的文件夹 创建成功! || echo 创建失败!
)else (
echo 已经存在 F:\我的文件夹,不需要创建!
)
echo.
::延迟3秒 重命名文件夹
echo 按下任意键,将在3秒后把 我的文件夹 改名为 我的改名文件夹
pause>nul
ping 127.0.0.1>nul -n 3
ren F:\我的文件夹 我的改名文件夹 && echo 改名成功! || echo 改名失败!
::延迟3秒 复制文件夹 /e 复制所有子目录,包括空目录。/y 覆盖文件
echo 按下任意键,将在3秒后把 我的改名文件夹 复制到 D盘 下
pause>nul
choice /t 3 /d y /n >nul
xcopy "F:\我的改名文件夹" "D:\我的改名文件夹\" /e /y && echo D:\改名后的文件夹 复制成功! || echo 复制失败!
::延迟3秒 删除文件夹 /s 是否删除子目录 /q 是否询问
echo 按下任意键,将在3秒后删除创建的文件夹
pause>nul
ping 127.0.0.1>nul -n 3
rd /s /q D:\我的改名文件夹 && rd /s /q F:\我的改名文件夹 && rd /s /q F:\我的文件夹 && echo 删除成功!
echo.
pause
goto StartStudy
脚本下载:
http://download.csdn.net/download/u012322710/10190451