bat编程常用代码片断

不会写脚本的Android程序员不是好的理发师!

头都秃了,理毛啊!


获取时间

1
2
3
4
5
6
7
@echo off
set cur=%time%

#输出示例 23:15:00.18
echo %cur%

goto:eof

判断文件是否存在

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off

set local_file=local.properties

if not exist %local_file% (
echo local.properties is not exist

REM 如果不存在就拷贝
COPY /Y/B hello\local.properties local.properties
) else (
echo local.properties is exist
)

goto:eof

判断环境变量是否存在

1
2
3
4
5
6
7
8
@echo off

if not exist %ANDROID_HOME% (
echo "-------- please set env variable ANDROID_HOME !!!"
goto:eof
)

goto:eof

输出结果(成功、失败、统计个数时间)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
@echo off
setlocal
call:setESC


call:doFailed "-------- [xxx] failed !!!"

call:doSuccess "-------- [fff] success --------"

set START=%time%
set num=0

REM 模拟执行1秒钟执行5次子任务
set /a num+=5
timeout 1

REM 如果参数有空格或者是时间串必须加双引号,读取时用%~2
call:doTotal %num% "%START%"

goto:eof

::---------------------- functions -----------------------------
:doSuccess
echo.
echo %ESC%[32m%~1%ESC%[0m
echo.
goto:eof

:doFailed
echo.
echo %ESC%[91m%~1%ESC%[0m
echo.
goto:eof

REM %~1     : 删除引号(\"),扩充 %1
:doTotal
set a=%~2

set /a h=%a:~0,2%
set /a m=%a:~3,2%
set /a s=%a:~6,2%
set /a start = %h%*60*60+%m%*60+%s%
echo start : %start%

set a=%time%

set /a h=%a:~0,2%
set /a m=%a:~3,2%
set /a s=%a:~6,2%
set /a end = %h%*60*60+%m%*60+%s%
echo end : %end%

set /a use = %end%-%start%

echo.
echo -------- %ESC%[32m[ total : %~1 ]%ESC%[0m --------
echo -------- %ESC%[32m[ time : %use% ]%ESC%[0m --------
echo.
goto:eof

REM https://gist.github.com/mlocati/fdabcaeb8071d5c75a2d51712db24011
:setESC
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set ESC=%%b
goto:eof
)
goto:eof
::---------------------- functions end-----------------------------