以下是关于批处理命令的详细介绍和使用指南,旨在帮助您更好地理解和应用这些命令。
要解决批处理文件中的中文乱码问题,可以使用以下命令:
chcp 65001
这会将命令提示符的编码设置为UTF-8,从而正确显示中文字符。
以下是测试乱码的代码:
echo off cls echo 中文输出测试 pause
中文测试
对应编码对照表如下:
| 代码页 | 映射的字符集 |
|---|---|
| 936 | GB2312 |
| 20127 | US-ASCII |
| 65001 | UTF-8 |
批处理有很多有趣的命令,学习这些命令可以让您更高效地完成任务。以下是一些基础命令:
语句注释
rem行注释,可以回显(语句会在命令行中显示)。
::两个冒号,效果同上,但不会回显。(冒号后加任意非字母数字字符都可起到注释作用)。
暂停
pause暂停,命令行中出现"请按任意键继续..."。
输出和换行
echo后加内容即输出该内容,如:
echo "welcome!"。
echo.换行命令,即
echo后加一个点。
关闭路径显示
echo off关闭路径显示。
开启
start开启(一个神奇的命令,相当好用)。可以通过
start开启你想开启的一切(给个执行路径就行,网站都能打开)。
start http://www.baidu.com
当然,不仅仅用于打开网站,还有文件夹,文件。
创建文件夹
md创建文件夹,很多时候都是为了方便搞这个文件夹,
md直接创建很方便,删的时候直接
del+ 文件夹名称就删掉了。
延迟
timeout延迟,虽然不是很经典的命令,但是很多时候能给你带来一点欢乐。
@echo off ::每隔一秒输出兔子序列 set a=1 set b=1 echo %a%&timeout 1 >nul echo %b%&timeout 1 >nul :start set /a c=a+b echo %c%&set a=%b%&set b=%c% timeout 1 > nul goto start pause
if 语句判断
if表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:
IF 语法:
if [not] "参数" == "字符串" 待执行的命令
参数如果等于(
not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
示例:
if "%1" == "a" format a:
if {%1} == {} goto noparmsif exist 语法:
if [not] exist [路径\\]文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
示例:
if exist config.sys edit config.sys if exist config.sys type config.sys
if errorlevel number 语法:
if [not] errorlevel 待执行的命令
如果程序返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。(返回值必须按照从大到小的顺序排列)
示例:
@echo off XCOPY F:\\test.bat D:\\ IF ERRORLEVEL 1 (ECHO 文件拷贝失败) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件 pause
很多 DOS 程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),称为错误码
errorlevel或称返回码。常见的返回码为 0、1。通过
if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令。
else 语法:
if 条件 (成立时执行的命令) else (不成立时执行的命令)
如果是多个条件,建议适当使用括号把各条件包起来,以免出错。
示例:
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3)
注:如果
else的语句需要换行,
if执行的行尾需用“^”连接,并且
if执行的动作需用括号包起来,否则报错。
示例:
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^ else (echo comment3)
比较运算符:
EQU- 等于(一般使用“==”)
NEQ- 不等于(没有 “!=”,改用“ if not 1==1 ”的写法)
LSS- 小于
LEQ- 小于或等于
GTR- 大于
GEQ- 大于或等于
循环在批处理中使用得并不多,
if判断非常重要,掌握好这些命令可以帮助您完成一些较为复杂的任务。不过,对于更复杂的任务,编写代码可能更为可靠。