windows 下的命令行编程

@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

转载于:https://my.oschina.net/agui1989/blog/1599865

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值