@echo off //本页面脚本在命令行不回显
rem或:: 表示后面是注释,本文添加了一些注释用//开头,只是为了方便,在.bat或.cmd文件中不能这样注释
rem windows下的批处理文件可以是.bat或.cmd作为文件后缀,效果相同
1.判断
rem 定义变量:set "变量名=值"
set "a=4"
if "%a%"=="3" (echo "hi") else if "%a%"=="4" (echo "4") else echo "he"
set b=7
if "%b%"=="7" echo 7
rem 这样也可以
if %b%==7 echo 7
注意几点:
1. 如果不换行的话,中间的echo "hi" 要用括号,否则后面的 else 无法识别
2. if 后面不能加括号 echo hi 中可以加小括号,但不能用花括号
else if 也是支持的:
set "a=4"
if "%a%"=="3" (echo "hi") else if "%a%"=="4" (echo "4") else echo "he"
这样定义与行:
set b=7
if "%b%"=="7" echo 7 // %b% 如果加了引号,而和它比较的7也应该加,不然不相等
rem 这样也可以
if %b%==7 echo 7 //都不加引号时,相等的
但 set b=7 中的7是字符串
if判断的时候是区分数字和字符串的,echo 7与echo "7" 也不一样的
换行的写法:
set var=before
if "%var%" == "before" (
set var=after
if "%var%" == "after" (
echo succ [var=%var%]
) else (
echo fail [var=%var%]
)
)
echo var=%var%
pause>nul
rem 等待输入后再执行后面的代码
setlocal enableDelayedExpansion
set var=before
if "!var!" == "before" (
set var=after
if "!var!" == "after" (
echo succ [var=!var!]
) else (
echo fail [var=!var!]
)
)
rem pause>nul
** 关于 setlocal enableDelayedExpansion
请看:http://blog.csdn.net/kolamemo/article/details/18036021
2.循环
见:http://blog.csdn.net/xhhjin/article/details/7373524
for %%f in (*.*) do echo %%f
for %%i in (1,2,3,4,5) do echo %%i
for %%i in (C:/*) do echo %%i
for /d %%i in (C:/*) do echo %%i
rem 不加/d列出所有文件,加了/d列出所有目录
for %%i in (*.php) do echo %%i
rem 打印指定类型的文件
rem 问题:怎样打印1到100 ?
rem 答案是使用 /l set(start,step,end)
for /l %%i in (1,1,100) do echo %%i
for /l %%i in (0,5,100) do echo %%i
rem 读取某文件的所有行,一行一行地读出来
for /f %%i in (a.php) do echo %%i
rem ()后面不能换行
3.函数
3.1 定义
:test
echo I am test
goto:eof
3.2 调用
call:test
3.3 传参
call:test1 2 3
:test1
echo %1+%2
goto:eof
rem 特别注意:当一个页面中有多个函数时,一定要把所有函数放到最后,调用的代码放在函数前面
rem cmd 中定义函数,实际上就是使用goto语句
rem 要传参的话,不能在函数定义后调用,必须要定义之前调用
rem call:test1 1 2
3.4 获取返回值rem cmd 中不能直接用return 返回,一般定义全局变量,在函数内修改这个变量即可
set return="old"
set rr=""
call:myreturn
echo %return%
call:return rr "new"
echo %rr%
rem 通过全局变量来获得返回值
:myreturn
set return="I am return"
goto:eof
rem 通过传参的参数来获取返回值
:return
set %~1=%2
goto:eof
rem 函数部分可参考:http://blog.csdn.net/xiaoding133/article/details/39252357
4..获取用户输入
set /p b=please write something:
echo "%b%"
5..引入其它文件
call haha.bat
rem 直接在文件名前面加call,call后面不需要加:
只需要加空格
推荐收藏:
系统内置的函数大全:https://www.cnblogs.com/shlcn/archive/2011/07/21/2112878.html