DOS批处理高级教程:第七章 DOS批处理编程高级技巧(4)

2019-03-11 08:43

(如果要继续输入特殊字符请再次按ctrl+p,然后ctrl+某个字母)

以上是特殊字符的输入方法,选自[英雄]教程,很管用的。也就是用编辑程序edit输入特殊字符,然后保存为一文本文件,再在windows下打开此文件,复制其中的特殊符号即可。

一些简单的特殊符号可以在dos命令窗口直接输入,并用重定向保存为文本文件。 例:

C:>ECHO ^G>temp.txt

“^G”是用Ctrl+G或Alt+007输入,输入多个^G可以产生多声鸣响。

特殊字符的应用也很有意思,这里仅举一例:退格键

退格键表示删除左边的字符,此键不能在文档中正常输入,但可以通过edit编辑程序录入并复制出来。即“”。

利用退格键,可以设计闪烁文字效果

例:文字闪烁

??? @echo off ??? :start

??? set/p=床前明月光nul ??? ::设置延迟时间 ??? set /p a=

??? :: 输出一些退格符将光标置于该行的最左端(退格符的数量可以自己调整)。 ??? set /p a=

??? ::再次输出退格符将光标置于该行的最左端,这里的退格符数量一定不能比前面的空格数少。 ??? ::否则光标不能退到最左端。

??? goto start

复制代码 例:输出唐诗一首,每行闪动多次

??? @echo off

??? setlocal enabledelayedexpansion

复制代码 set str=床前明月光 疑是地上霜 举头望明月 低头思故乡

??? ::定义字符串str ??? for %%i in (%str%) do (

??? rem 由于str中含有空格,则以空格为分隔符将str中的每一个部分依次赋给变量%%i。 ??? set char=%%i ??? echo. ??? echo.

??? for /l %%j in (0,1,5) do (

??? set/p=!char:~%%j,1!

??? rem 依次取出变量char中的每一个字符,并显示。 ??? ping -n 0 127.0.0.1>nul ??? rem 设置输出每个字符的时间延迟。 ??? ) ??? call :hero %%i ??? )

??? pause>nul

??? exit ??? ??? :hero

??? for /l %%k in (1,1,10) do ( ??? ping /n 0 127.0.0.1>nul ??? set /p a=

??? set /p a=

??? ping /n 0 127.0.0.1>nul ??? set /p a=%1

??? ::文字闪动 ??? goto :eof

复制代码 十二、随机数(%random%)的应用技巧

%RANDOM% 系统变量 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。

2的15次方等于32768,上面的0~32767实际就是15位二进制数的范围。

那么,如何获取100以内的随机数呢?很简单,将%RANDOM%按100进行求余运算即可,见例子。

例:生成5个100以内的随机数

??? @echo off

??? setlocal enabledelayedexpansion ??? for /L %%i in (1 1 5) do (

??? set /a randomNum=!random!%0 ??? echo 随机数:!randomNum! ??? ) ??? pause

复制代码 运行结果:(每次运行不一样) 随机数:91 随机数:67 随机数:58 随机数:26 随机数:20

请按任意键继续. . .

求余数运算set /a randomNum=!random!%0中的100可以是1~32768之间的任意整数。

总结:利用系统变量%random%,求余数运算%%,字符串处理等,可以实现很多随机处理。

思考题目:生成给定位数的随机密码

解答思路:将26个英文字母或10数字以及其它特殊字符组成一个字符串,随机抽取其中的若干字符。

参考答案1:(简单)

??? @echo off

??? call :randomPassword 5 pass1 pass2 ??? echo %pass1% %pass2% ??? pause ??? exit ???

??? :randomPassword ??? ::---------生成随机密码

??? ::---------%1为密码长度,%2及以后为返回变量名称 ??? ::---------for命令最多只能区分31个字段 ??? @echo off

??? set password_len=%1

??? if not defined password_len goto :eof ??? if %password_len% lss 1 goto :eof

??? set wordset=a b c d e f g h i j k l m n o p q r s t u v w x y z ??? set return= ??? set num=0 ??? :randomPassword1 ??? set /a num+=1

??? set /a numof=%random%%&+1

??? for /f \??? if %num% lss %password_len% goto randomPassword1 ??? if not \??? shift /2

??? if not \??? goto :eof

复制代码 参考答案2:(最优)

??? @echo off

??? call :randomPassword 6 pass1 pass2 pass3


DOS批处理高级教程:第七章 DOS批处理编程高级技巧(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年基础班中医基础理论讲义(7)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: