前记
DOS批处理的变量扩展
1.参数化变量扩展
|
1
2
3
4
5
6
7
8
|
@
echo
off
set
var=
test
call :deal %var% demo
:deal
echo
%%0=%0
echo
%%1=%1
echo
%%2=%2
pause
|
|
1
2
3
4
|
@
echo
off
set
/p
inPath=请输入或拖放目录和文件...
echo
你输入的路径为:%inPath%
pause
|
|
1
2
3
4
|
@
echo
off
echo
当前执行程序:%0
echo
拖拽的文件或目录:%1
pause
|
2.单字符变量扩展
| 变量替换方式 | 说明 |
| %~变量名 | 删除变量所表示的值的两端的引号 |
| %~f变量名 | 在变量之前追加当前执行路径(目录路径) |
| %~d变量名 | 将变量转换为当前盘符 |
| %~p变量名 | 将变量转换为目录路径(不包含盘符) |
| %~n变量名 | 将变量转换为文件名(当集合类型为字符串时) |
| %~x变量名 | 将变量转换为文件扩展名,只适合字符串 |
| %~s变量名 | 在变量之前追加当前执行短路径(目录短路径) |
| %~a变量名 | 将变量转换为文件的属性,只适合字符串 |
| %~t变量名 | 将变量转换为文件的修改日期,只适合字符串 |
| %~z变量名 | 将变量转换为文件的大小(KB),只适合字符串 |
| %~$PATH:变量名 | 将变量转换为环境变量的目录 |
| %~dp变量名 | 将变量转换为当前执行目录路径 |
| %~nx变量名 | 将变量转换为文件全名称(包括扩展名) |
| %~fs变量名 | 将变量转换为完整的短路径名称 |
| %~dp$PATH:变量名 | 将变量转换为环境变量的目录 |
| %~ftza变量名 | 将变量转换为包含属性、修改日期、大小、全路径的列表 |
|
1
2
3
4
5
6
7
8
9
10
11
12
|
@
echo
off
echo
正在运行的这个批处理:
echo
完全路径:%0
echo
去掉引号:%~0
echo
所在分区:%~d0
echo
所处路径:%~p0
echo
文件名:%~n0
echo
扩展名:%~x0
echo
文件属性:%~a0
echo
修改时间:%~t0
echo
文件大小:%~z0
pause
|
3.字符串变量扩展
3.1.字符串的拼接
|
1
2
3
4
5
6
7
|
@
echo
off
set
var1=伟大的中国!
set
var2=我为你自豪!
echo
拼接字符串:%var1%%var2%
set
var3=%var1%%var2%
echo
%var3%
pause
|
3.2.字符串的替换
|
1
2
3
4
5
6
7
8
9
|
@
echo
off
set
var=Hello World .
echo
原字符串:%var%
echo
将World替换为Tom:%var:World=Tom%
set
/p
name=你输入你的名字:
echo
将World替换为输入的名字:%var:World=%%name%%
setlocal enabledelayedexpansion
echo
将World替换为输入的名字:%var:World=!name!%
pause
|
3.3.字符串的截取
|
1
2
3
4
5
6
7
8
9
10
|
@
echo
off
set
var=abcdefgh
echo
原始字符串:%var%
echo
字符串索引:01234567
echo
从第3个字符开始截取:%var:~2%
echo
截取前5个字符:%var:~0,5%
echo
截取3-6个字符:%var:~2,4%
echo
截取6-12个字符:%var:~6,6%
echo
截取15-20个字符:%var:~15,5%
pause
|
|
1
2
3
4
5
6
7
8
9
|
@
echo
off
set
var=abcdefgh
echo
原始字符串:%var%
echo
字符串索引:01234567
echo
字符串倒数索引:87654321
echo
倒数截取3个字符:%var:~-3%
echo
从倒数第5个字符开始截取3个字符:%var:~-5,3%
echo
从第2个字符开始截取到倒数第5个字符位置:%var:~2,-5%
pause
|
DOS批处理的符号总结
-
“@”符号
-
“>”符号
-
“>>”符号
-
“<”符号
-
“|”符号
-
“^”符号
-
“$”符号
-
“&”符号
-
“&&”符号
-
“||”符号
-
“>&”/“<&”符号
-
“()”符号
-
“!”符号
-
“~”符号
-
“+”符号
-
“-”符号
-
“*”符号
-
“/”符号
-
“%”符号
-
“<<”符号
-
“=”符号
-
“,”符号
-
“.”符号
-
“ ”符号
-
“?”符号
-
“""”符号
-
“''”符号
-
“;”符号
-
“[”符号
-
“]”符号
-
“\”符号
-
“:”符号
-
“::”符号
-
“nul”符号
实用案例分析
1.强制删除目录或文件
|
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
|
@
echo
off
echo
***************强制删除目录*****************
echo
使用方法:
echo
1.请输入要删除目录的完整路径地址。
echo
2.将要删除的目录拖放到执行中的批处理中。
echo
3.将要删除的目录拖放到程序图标上。
echo
注意:支持文件删除,删除后无法在回收站恢复。
echo
********************************************
echo
=
set
inPath=%1
if
defined inPath (
goto op1
)
else
(
goto op2
)
:op1
if
exist %inPath%\nul (
rem 删除目录下所有文件(网传有del
/f
/a
/q
\\?%1做法)
del
/f
/a
/q
%1
rem 删除当前目录(网传有rd
/s
/q
\\?%1做法)
rd
/s
/q
%1
)
else
(
rem 删除目录下所有文件(网传有del
/f
/a
/q
\\?%1做法)
del
/f
/a
/q
%1
)
goto end
:op2
set
/p
inPath=目录完全路径地址(输入或拖放)并回车:
if
exist %inPath%\nul (
rem 删除目录下所有文件
del
/f
/a
/q
%inPath%
rem 删除当前目录
rd
/s
/q
%inPath%
)
else
(
rem 删除目录下所有文件
del
/f
/a
/q
%inPath%
)
goto end
:end
echo
=
echo
删除已完成!请刷新看看是否删除。
pause > nul
|
2.锁定目录管理(无法引用的目录)
|
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
|
@
echo
off
echo
*******************锁定文件夹管理********************
echo
=使用说明:
echo
=1.新建目录必须使用至少一个
"."
结尾才能锁定进行管理,否则视为普通目录。
echo
=2.打开目录必须使用完全路径名。
echo
=3.删除目录必须首先删除目录中的所有文件。通过打开手动删除。
echo
*****************************************************
:start
echo
=
set
/p
op
=请选择以上操作(1.新建
/2
.打开
/3
.删除):
if
%
op
%==1 goto op1
if
%
op
%==2 goto op2
if
%
op
%==3 goto op3
:op1
set
/p
dName=请输入新建目录的名称:
md %dName%.\
if
errorlevel 0 (
echo
=%dName%目录新建完成!
)
else
(
echo
=%dName%目录创建失败!
)
goto end
:op2
set
/p
dName=请输入要打开的目录(完整路径):
start %dName%.\
if
errorlevel 0 (
echo
=%dName%目录已打开!
)
else
(
echo
=%dName%目录打开失败!
)
goto end
:op3
set
/p
dName=请输入要删除的目录:
rd %dName%.
goto end
:end
echo
=
set
/p
choose=是否退出? (Y
/N
):
if
/i
%choose% equ y (
exit
)
else
(
goto start
)
|
3.清理系统垃圾信息
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@
echo
off
rem 使用系统环境变量来获取各个指定的目录地址,系统环境变量可以在系统属性中查看
echo
正在清理系统垃圾文件,请稍后......
rem “%systemdrive%”为系统盘符环境变量,一般为“C:”
del
/f
/s
/q
%systemdrive%\*.tmp
del
/f
/s
/q
%systemdrive%\*.log
rem “recycled”目录是回收站的目录,如果不清空回收站,则可以注释该语句
del
/f
/s
/q
%systemdrive%\recycled\*.*
rem “%windir%”为系统目录环境变量,一般为“C:\WINDOWS”
del
/f
/s
/q
%windir%\*.bak
rem “prefetch”目录为预读文件目录
del
/f
/s
/q
%windir%\prefetch\*.*
rem “temp”表示临时工作目录
rd
/s
/q
%windir%\temp & md %windir%\temp
rem “%userprofile%”为系统当前用户目录环境变量,一般为“C:\Documents and Settings\用户名”
rem “cookies”目录为浏览器“cookie”存放目录
del
/f
/q
%userprofile%\cookies\*.*
rem “Local Settings”目录为浏览器缓存目录
del
/f
/s
/q
"%userprofile%\Local Settings\Temporary Internet Files\*.*"
del
/f
/s
/q
"%userprofile%\Local Settings\Temp\*.*"
echo
清理系统垃圾完成!
echo
. & pause
|
4.重新注册系统组件
|
1
2
3
4
5
6
7
8
9
10
11
12
|
@
echo
off
set
dPath=%systemroot%\system32\
echo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo
输入目录,注册其下的所有DLL或OCX组件
echo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set
/p
dPath=请输入你要注册组件的目录(默认为%dPath%):
for
%%f
in
(%dPath%.dll)
do
(
regsvr32
/s
%%f
)
for
%%f
in
(%dPath%.ocx)
do
(
regsvr32
/s
%%f
)
|
5.批量文件重命名操作
|
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
|
@
echo
off
echo
#################################################
echo
使用说明:
echo
不指定工作路径则为当前所在目录。
echo
只需要指定需要替换的字符串和替换成的字符串即可。
echo
#################################################
set
dPath=%~dp0
set
/p
dPath=设置文件所在目录(默认为%dPath%):
:start
set
/p
oldStr=要替换的字符串:
set
/p
newStr=要替换成的字符串:
if
not defined oldStr goto start
if
not defined newStr goto start
setlocal enabledelayedexpansion
for
/f
"skip=4 tokens=3*"
%%a
in
(
'dir'
)
do
(
if
not %%a==^<DIR^> (
if
not %%b==字节 (
if
not %%b==可用字节 (
if
not %%b==%~nx0 (
set
fileName=%%b
set
fileName=!fileName:%oldStr%=%newStr%!
ren
"%%b"
"!fileName!"
)
)
)
)
)
set
exitop=n
set
/p
exitop=是否退出?(Y
/N
)
if
/i
%exitop% equ y (
exit
)
else
(
goto start
)
pause
|
6.进程、端口信息管理
|
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
@
echo
off
title 端口/进程管理工具
setlocal enabledelayedexpansion
:menu
echo
=
echo
╔- -╗
echo
本机开放的端口及使用该端口的进程管理工具
echo
= ..........................................................
echo
1.TCP
/UDP
分类列表查看
echo
2.本地端口查找
echo
3.进程终止
echo
Q:退出
echo
╚- -╝
echo
=
set
op
=q
set
/p
op
=请选择操作:
if
%
op
%==1 goto seeType
if
%
op
%==2 goto searchPort
if
%
op
%==3 goto killProcess
if
/i
%
op
% equ q goto end
goto menu
:seeType
echo
=
echo
-=TCP协议=-
echo
=
echo
本地地址 端口 进程ID 进程名称
echo
─────────────────────────────
for
/f
"skip=4 tokens=2,5"
%%a
in
(
'netstat -ano -p tcp'
)
do
(
set
resultStr=
rem 拆分本地地址为IP和端口号
for
/f
"delims=: tokens=1,2"
%%i
in
(
"%%a"
)
do
(
call :builderInfo 15 %%i
set
resultStr1= !resultStr!
call :builderInfo 6 %%j
set
resultStr2=!resultStr1! !resultStr!
)
call :builderInfo 6 %%b
set
resultStr3=!resultStr2! !resultStr!
rem 通过进程ID获取进程名称
for
/f
"skip=2 delims=, tokens=1"
%%i
in
(
'tasklist /fi "PID eq %%b" /fo csv'
)
do
(
set
resultStr4=!resultStr3! %%~i
)
echo
!resultStr4!
)
echo
==========================================================
echo
=
echo
-=UDP协议=-
echo
=
echo
本地地址 端口 进程ID 进程名称
echo
─────────────────────────────
for
/f
"skip=4 tokens=2,4"
%%a
in
(
'netstat -ano -p udp'
)
do
(
set
resultStr=
rem 拆分本地地址为IP和端口号
for
/f
"delims=: tokens=1,2"
%%i
in
(
"%%a"
)
do
(
call :builderInfo 15 %%i
set
resultStr1= !resultStr!
call :builderInfo 6 %%j
set
resultStr2=!resultStr1! !resultStr!
)
call :builderInfo 6 %%b
set
resultStr3=!resultStr2! !resultStr!
rem 通过进程ID获取进程名称
for
/f
"skip=2 delims=, tokens=1"
%%i
in
(
'tasklist /fi "PID eq %%b" /fo csv'
)
do
(
set
resultStr4=!resultStr3! %%~i
)
echo
!resultStr4!
)
goto end
:searchPort
set
/p
prot=请输入要查找的端口号(输入b返回主菜单):
if
not defined prot goto :searchPort
if
/i
%prot% equ b goto :menu
echo
=
echo
= -=本地%prot%端口使用明细=-
echo
=
echo
协议名称 进程ID 进程名称
echo
─────────────────
for
/f
"tokens=1,2,4,5"
%%a
in
(
'netstat -ano ^| findstr ":%prot%\>"'
)
do
(
for
/f
%%i
in
(
'echo %%b ^| findstr ":%prot%\>"'
)
do
(
set
resultStr=
if
/i
%%a equ UDP (
call :builderInfo 6 %%c
set
resultStr1= UDP !resultStr!
rem 通过进程ID获取进程名称和对应组件
for
/f
"skip=2 delims=, tokens=1"
%%i
in
(
'tasklist /fi "PID eq %%c" /fo csv'
)
do
(
set
resultStr2=!resultStr1! %%~i
)
)
else
(
call :builderInfo 6 %%d
set
resultStr1= TCP !resultStr!
rem 通过进程ID获取进程名称和对应组件
for
/f
"skip=2 delims=, tokens=1"
%%i
in
(
'tasklist /fi "PID eq %%d" /fo csv'
)
do
(
set
resultStr2=!resultStr1! %%~i
)
)
echo
!resultStr2!
)
)
goto end
:killProcess
set
/p
proTag=请输入进程ID或名称(输入b返回主菜单):
if
not defined proTag goto killProcess
if
/i
%proTag% equ b goto menu
for
/f
%%i
in
(
'echo %proTag% ^| findstr ".exe .dll"'
)
do
(
set
/a
count=0
for
/f
"skip=2 delims=, tokens=1,2,3"
%%a
in
(
'tasklist /fi "imagename eq %%i" /fo csv'
)
do
(
set
/a
count+=1
)
set
sure=N
set
/p
sure=确定结束%proTag%指向的!count!个进程吗?(Y
/N
)
if
/i
!sure! equ y (
taskkill
/im
%proTag%
/f
)
else
(
goto killProcess
)
)
set
/a
num=%proTag%
if
%num%==0
echo
请输入正确进程ID或进程名称,例如123或cmd.exe... && goto killProcess
for
/f
"skip=2 delims=, tokens=1,2,3"
%%a
in
(
'tasklist /fi "pid eq %num%" /fo csv'
)
do
(
set
sure=N
set
/p
sure=确定结束%num%指向进程吗?(Y
/N
)
if
/i
!sure! equ y (
taskkill
/pid
%num%
/f
)
else
(
goto killProcess
)
)
goto end
:end
echo
=
set
exitop=n
set
/p
exitop=是否退出?(Y
/N
)
if
/i
%exitop% equ y (
exit
)
else
(
goto menu
)
rem 构建输出信息,根据长度补全空格,是左边对齐
:builderInfo
rem 字符串最大长度
set
maxLength=%1
rem 原始字符串
set
str=%2
rem 原始字符串长度
set
/a
length=0
rem 计算字符串长度,使用循环截取单个字符是否等于空为依据
:getLength
set
/a
length+=1
if
"%str%"
==
""
goto fillSpance
for
/f
%%i
in
(
"%length%"
)
do
(
if
not
"!str:~%%i,1!"
==
""
goto getLength
)
rem 使用空格补全字符串,如果原始字符串长度小于最大字符串长度则在后面添加空格
:fillSpance
set
temp=
if
/i
%length% lss %maxLength% (
for
/l
%%i
in
(%length%,1,%maxLength%)
do
(
set
temp= !temp!
)
)
set
resultStr=%str%!temp!
|
7.启动或关闭服务
|
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
|
@
echo
off
title 服务管理工具
setlocal enabledelayedexpansion
:menu
echo
=
echo
==================================================
echo
=
echo
-=服务管理工具=-
echo
=
echo
1.启动服务 2.关闭服务
echo
Q.退出
echo
=
echo
使用说明:启动或关闭服务需要输入服务名称,服务名称
echo
可以通过“service.msc”管理面板对应属性中查看。
echo
==================================================
echo
=
set
/p
op
=请选择操作:
if
%
op
%==1 goto startService
if
%
op
%==2 goto closeService
if
/i
%
op
% equ q
exit
goto menu
:startService
echo
=
set
/p
serviceName=请输入你要启动的服务名称:
for
/f
"delims="
%%a
in
(
'net start ^| find /i "%serviceName%"'
)
do
(
set
/p
choice1=%serviceName%服务正在运行...是否关闭?(Y
/N
^)
if
/i
!choice1! equ y (
net stop %serviceName%
)
goto end
)
net start %serviceName%
goto end
:closeService
echo
=
set
/p
serviceName=请输入你要关闭的服务名称:
for
/f
"delims="
%%a
in
(
'net start ^| find /i "%serviceName%"'
)
do
(
net stop %serviceName%
goto end
)
set
/p
choice2=%serviceName%服务处于停止状态...是否开启?(Y
/N
^)
if
/i
%choice2% equ y (
net start !serviceName!
)
goto end
:end
echo
=
set
exitop=n
set
/p
exitop=是否退出?(Y
/N
)
if
/i
%exitop% equ y (
exit
)
else
(
goto menu
)
|
8.算法扩展:关于浮点数运算
|
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
@
echo
off
:main
cls
echo
.
echo
要计算某几个数字的和,请直接敲回车
echo
(注:由于过于复杂和时间问题,原码并非本人编写来自网络)
echo
退出请输入 e
echo
.
set
num1=0.0
set
times
=0
set
expression=
:input_loop
set
num2=
set
sum_=
set
/a
times
+=1
set
/p
num2= 请输入第 %
times
% 个数:
if
/i
"%num2%"
==
"e"
exit
if
"%num2%"
==
""
goto result
if
"%num2:~0,1%"
==
"."
set
num2=0%num2%
call :input_check
"%num2%"
num2
set
expression=%expression%+%num2%
setlocal enabledelayedexpansion
for
/f
"tokens=1-4 delims=."
%%i
in
(
"%num1%.%num2%"
)
do
(
set
int1=%%i
set
int2=%%k
set
dec1=%%j
set
dec2=%%l
call :get_length int1 %%i
call :get_length int2 %%k
call :get_length dec1 %%j
call :get_length dec2 %%l
call :add_zero
call :
sum
goto input_loop
)
:input_check
rem =========== 检测输入是否正确 ===========
echo
%1|findstr
"\."
>nul||
set
%~2=%~1.0
for
/f
"tokens=1* delims=."
%%i
in
(%1)
do
(
echo
%%i%%j|findstr
"^[0-9]*$"
>nul || (
set
/a
times
-=1&goto input_loop)
)
goto :eof
:get_length
rem =========== 计算各部分数字的长度 ===========
set
count=0
:intercept
set
/a
count+=1
for
/f
%%i
in
(
"%2"
)
do
(
set
var=%%i
if
not
"!var:~%count%,1!"
==
""
goto intercept
set
%1_length=!count!
)
goto :eof
:add_zero
rem =========== 分别在整数部分和小数部分添加0字符串 ===========
:: 在数位不够的整数部分添0补齐
set
/a
int_length_diff=%int1_length%-%int2_length%
set
int_length_diff=%int_length_diff:-=%
call :creat_zero int_zero %int_length_diff%
if
%int1_length% gtr %int2_length% (
set
int2=%int_zero%%int2%
set
int_length_max=%int1_length%
)
else
(
set
int1=%int_zero%%int1%
set
int_length_max=%int2_length%
)
:: 在数位不够的小数部分添0补齐
set
/a
dec_length_diff=%dec1_length%-%dec2_length%
set
dec_length_diff=%dec_length_diff:-=%
call :creat_zero dec_zero %dec_length_diff%
if
%dec1_length% gtr %dec2_length% (
set
dec2=%dec2%%dec_zero%
set
dec_length_max=%dec1_length%
)
else
(
set
dec1=%dec1%%dec_zero%
set
dec_length_max=%dec2_length%
)
goto :eof
:creat_zero
rem =========== 根据数字字符串长度的差异,生成相应长度的0字符串 ===========
set
zero=
for
/l
%%i
in
(1,1,%2)
do
set
zero=!zero!0
set
%1=%zero%
goto :eof
:
sum
rem =========== 按位计算新数的和 ===========
:: 提取整数部分和小数部分来组成新数
set
num1_new=%int1%%dec1%
set
num2_new=%int2%%dec2%
set
/a
length_total=%int_length_max%+%dec_length_max%
set
switch=0
set
sum_tmp=
for
/l
%%i
in
(1,1,%length_total%)
do
(
set
/a
sum_tmp=!num1_new:~-%%i,1!+!num2_new:~-%%i,1!+!switch!
if
!sum_tmp! gtr 9 (
set
/a
sum_tmp=!sum_tmp!-10
set
switch=1
)
else
(
set
switch=0
)
set
sum_=!sum_tmp!!sum_!
)
:: 插入小数点
set
sum_=!sum_:~0,-%dec_length_max%!.!sum_:~-%dec_length_max%!
:: 判断在最高位时是否进位
if
%switch% equ 1 (
set
num1=1%sum_%
)
else
(
set
num1=%sum_%
)
goto :eof
:result
if
"%expression%"
==
""
set
/a
times
-=1&goto input_loop
echo
.
echo
%expression:~1%=%num1%
echo
.
pause
goto main
|
9.应用扩展:简单的特效
|
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
|
@
echo
off
set
a=10
set
b=0
:tex
set
/a
a+=3
set
/a
b+=1
mode con cols=%a% lines=%b%
if
%a% lss 60 goto :tex
echo
O(∩_∩)O 圣诞快乐 O(∩_∩)O
set
a=15,a6,2e,d0,34,8b,4f,9d,5e
for
%%i
in
(%a%)
do
(
ping
-n 2 127.1>nul
color %%i
)
for
%%i
in
(%a%,%a%)
do
(
ping
-n 1 127.1>nul
color %%i
)
>>ms.txt
echo
*/. . . * .
>>ms.txt
echo
.\* . [] * __
>>ms.txt
echo
*/ . ./\~~~~~~~~~~~~'\. ^|
>>ms.txt
echo
\*,/,..,\,...........,\.
>>ms.txt
echo
^|^| ..▎
# ▎田 田 ▎ ^| ▎
>>ms.txt
echo
^|^| ^&^&;▎ ▎ ▎
'^|'
▎ o
>>ms.txt
echo
^|^|
##■■■■■■■■■■〓
msg %username%
/w
/time
:3600 <ms.txt
del ms.txt
pause
|
1092

被折叠的 条评论
为什么被折叠?



