(如果要继续输入特殊字符请再次按ctrl+p,然后ctrl+某个字母)
以上是特殊字符的输入方法,选自[英雄]教程,很管用的。也就是用编辑程序edit输入特殊字符,然后保存为一文本文件,再在windows下打开此文件,复制其中的特殊符号即可。
一些简单的特殊符号可以在dos命令窗口直接输入,并用重定向保存为文本文件。 例:
C:>ECHO ^G>temp.txt
“^G”是用Ctrl+G或Alt+007输入,输入多个^G可以产生多声鸣响。
特殊字符的应用也很有意思,这里仅举一例:退格键
退格键表示删除左边的字符,此键不能在文档中正常输入,但可以通过edit编辑程序录入并复制出来。即“”。
利用退格键,可以设计闪烁文字效果
例:文字闪烁
??? @echo off ??? :start
??? set/p=床前明月光 ??? :: 输出一些退格符将光标置于该行的最左端(退格符的数量可以自己调整)。 ??? 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