700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > window的dos命令学习笔记 七

window的dos命令学习笔记 七

时间:2023-10-21 17:07:33

相关推荐

window的dos命令学习笔记 七

文章目录

一、dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油)二、执行状态返回值(`%errorlevel%`,和shell中`$?`相似):三、视窗1、color2、mode3、msg4、 视窗DIY举例:四、mshta参考的mshta命令用法示例:五、ASCII码六、一些杂点:1、@符合的另一个用法:@总结:2、TITLE(标题)3、find(查找)①、`/V`参数(可以理解为反选,和shell的grep -v功能类似)②、不带参数:③、`/C`只显示含有匹配到的字符串的行数④、`/i`,不区分大小写4、cd /d5、pushd 和 popd

一、dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油)

这个是我所以的dos学习笔记,希望对感兴趣的你有所帮助,如有错误,还望不吝赐教。如果对你有帮助,希望给我点个赞哈,Thanks♪(・ω・)ノ

学习主要还是靠坚持,如果真的觉得学一个知识,就坚持下去;三天打鱼俩天晒网,真的不如躺着歇,刷刷剧,或者玩俩局游戏。。。

window的dos命令学习笔记 一

window的dos命令学习笔记 二

window的dos命令学习笔记 三

window的dos命令学习笔记 四

window的dos命令学习笔记 五

window的dos命令学习笔记 六

window的dos命令学习笔记 七

window的dos命令学习笔记 八— bat文件打包成exe程序(实现脚本加密)

window的dos命令学习笔记 九— bat使用小工具

二、执行状态返回值(%errorlevel%,和shell中$?相似):

有些命令在执行之后将会返回一定的错误值(errorlevel),可以通过errorlevel的值判断命令执行的状况。

获取返回值errorlevel的方法就是,在执行命令后,立马调用返回值errorlevel,如echo %errorlevel%或者if %errorlevel%==1等命令。当返回值为0就是执行成功,当返回值为1表示不成功。

比如:

分别以:192.168.1.1和8.8.8.8俩个ip进行ping测试:

@echo offping 192.168.1.1IF ERRORLEVEL 1 goto MySuccessIF ERRORLEVEL 0 goto MyFail:MyFailecho 命令执行成功!goto Goodbye:MySuccessecho 命令执行失败!goto Goodbye:Goodbyeecho 命令已执行,结果显示在上面。pause

执行结果:

将需要ping的ip换成8.8.8.8,结果就成功了。可以看出8.8.8.8这个ping成功了。其实这个状态码和shell的$?有相似的效果,shell中的$?

shell脚本中:

if [ $? -ne 0 ];then上一命令执行失败时的操作else上一命令执行成功时的操作fi

其中,-ne代表不等于,$?代表状态值。

三、视窗

首先我们要DIY它的窗口。使用命令:color、mode、msg。

–1、设置窗口背景色和字体颜色by color。详细内容参见color /?。

–2、设置窗口大小by “MODE CON [COLS=c] [LINES=n]”,cols即宽度,lines即高度。

–3、GUI交互窗口by msg。详细内容参见msg /?。

1、color

设置默认的控制台前景和背景颜色。

COLOR [attr]

attr 指定控制台输出的颜色属性。

颜色属性由两个十六进制数字指定 –第一个对应于背景,第二个对应于前景。每个数字

可以为以下任何值:

0 = 黑色 8 = 灰色

1 = 蓝色 9 = 淡蓝色

2 = 绿色 A = 淡绿色

3 = 浅绿色 B = 淡浅绿色

4 = 红色 C = 淡红色

5 = 紫色 D = 淡紫色

6 = 黄色 E = 淡黄色

7 = 白色 F = 亮白色

如果没有给定任何参数,此命令会将颜色还原到 CMD.EXE 启动时的颜色。这个值来自当前控制台窗口、/T 命令行开关或 DefaultColor 注册表值。

如果尝试使用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。

示例:

"COLOR fc"在亮白色上产生淡红色

2、mode

cols即宽度,lines即高度。

mode con cols=50 lines=20

执行之后窗口自动变小了。

再次输入mode,不加任何参数:即显示状态信息。

3、msg

E:\000dos\7笔记七>msg /?将消息发送给用户。MSG {username | sessionname | sessionid | @filename | *}[/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]username 标识指定的用户名。sessionname 会话名。sessionid 会话 ID。@filename 识别这样一个文件,该文件含有将所发消息发送到的用户名、会话名和会话标识号的列表。* 给指定服务器上的所有会话发送信息。/SERVER:servername 要联系的服务器(默认值是当前值)。/TIME:seconds 等待接收器确认消息的时间延迟。/V 显示有关执行的操作的信息。/W 等待用户的响应,跟 /V 一起有用。message 要发送的消息。如果没有指定,发出提示,或者从 stdin读取。

4、 视窗DIY举例:

@echo offset a=10set b=0:texset /a a+=3set /a b+=1mode con cols=%a% lines=%b%if %a% lss 60 goto :texecho O(∩_∩)O 圣诞快乐 O(∩_∩)Oset a=15,a6,2e,d0,34,8b,4f,9d,5efor %%i in (%a%) do (ping -n 2 127.1>nulcolor %%i)for %%i in (%a%,%a%) do (ping -n 1 127.1>nulcolor %%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.txtdel ms.txtpause

执行即可:

四、mshta

@echo offecho 做好准备,响了啊!!pauseclscall :voiceecho 怎么样?呵呵,刺激吧~pause&goto:eof:voicemshta vbscript:createobject("sapi.spvoice").speak("Merry Christmas and Happy New Year!")(window.close)pausegoto:eof

结束控制:

–1、暂停批处理:直接按键盘上的Pause键喽

–2、终止批处理:组合键Ctrl+C。不过,有时候它好像响应的不太积极啊

参考的mshta命令用法示例:

参考原文章地址

防止内容丢失,我把作者的内容复制过来了,欢迎去看原博主写的。

JS:

复制代码代码如下:

mshta vbscript:window.execScript("alert('hello world!');","javascript")

VBS:

复制代码代码如下:

mshta javascript:window.execScript("msgBox('hello world!'):window.close","vbs")

调用VBS,分别使用MSGBOX函数和POPUP方法:

复制代码代码如下:

mshta vbscript:msgbox("该干活了,伙计!",64,"提示")(window.close) mshta vbscript:CreateObject("Wscript.Shell").popup("该干活了,伙计!",7,"提示",64)(window.close)

execute方法 一条语句连续弹二个信息框:

复制代码代码如下:

mshta vbscript:execute("msgbox ""one BOX"":msgbox ""two BOX"":window.close")

LZ他们弄的,调用系统的英文阅读:

复制代码代码如下:

mshta vbscript:createobject("sapi.spvoice").speak("Good luck")(window.close)

五、ASCII码

ASCII码是图形化的符号,可以用来点缀我们的批处理的。

在cmd窗口中我们可以通过任意一个字符的ASCII码来输入该字符,比如Ctrl+G、Ctrl+N等,字母a-z对应ASCII码的1-26。对于ASCII码大于26的字符,可以通过这个方法来输入:按住Alt键不松,通过小键盘输入ASCII码的十进制值,松开Alt键即可

下面这个批处理,可以把一个文件中的字符的ASCII码遍历打出来。

@echo off&mode con cols=80:beginclsset/p file=请输入要处理的文件(Q 键直接退出此脚本):if /i "%file%"=="Q" goto :eofif "%file%"=="" goto errorset new=%random%for %%a in (%file%) do set size=%%~zaif "%size%"=="0" goto errorcls&fsutil file createnew %new% %size% >nulecho=&&echo=文件内容为为:&echo==========================================================@type %file%echo=&echo==========================================================&echo=&&echo=文件内容所对应的ASCII码的十六进制形式依次为:&echo==========================================================for /f "skip=1 tokens=3" %%a in ('fc /B %new% %file%') do (set /p=%%a <nul)echo=&echo==========================================================&echo=&echo=&echo=文件内容所对应的ASCII码的十进制形式依次为:&echo==========================================================setlocal EnableDelayedExpansionfor /f "skip=1 tokens=3" %%a in ('fc /B %new% %file%') do (set num=%%aset /a num=0x!num!set /p=!num! <nul)del %new%endlocal&echo;&echo==========================================================&echo;&pauseexit /b 0:errorcls&echo;&echo;echo “输入错误” OR “文件大小为零”,请重新输入……del %new% >nul 2>nulset file=set new=pause>nul&goto :begin

执行效果:

六、一些杂点:

发现之前的学习过的知识点中还有一些比较实用的地方,但是之前没有注意到,再来补充补充。当然还有一些没有讲过的。

1、@符合的另一个用法:

之前学习了for的时候,发现后面可以跟上@和一些批处理命令。然后我想到了,如果和我之前的成绩分类的call用@替代,是否可以?

然后我测试了下。

之前的写法:

@echo off:return1set score=set /p score=请输入成绩rem 用来判断是否格式正确if %score% LSS 0 (echo "输入的成绩分数不对:%score%(分数0-100之间),请再次输入:" goto return1) if %score% GTR 100 (echo "输入的成绩分数不对:%score%(分数0-100之间),请再次输入:" goto return1) if %score% GTR 90 (echo "优秀" call pausecall exit)if %score% GTR 80 (echo "良好" call pausecall exit)if %score% GTR 70 (echo "中等" pausecall exit)if %score% GTR 60 (echo "及格" call pausecall exit)if (%score% LSS 60) (echo "不及格" call pausecall exit)

用@替代call:之前写这一点特别印象深刻,为了实现输入数字之后,直接将输出分类并且停顿然后退出,我当时搞了好久才弄成功这个效果。

@echo off:return1set score=set /p score=请输入成绩rem 用来判断是否格式正确if %score% LSS 0 (echo "输入的成绩分数不对:%score%(分数0-100之间),请再次输入:" goto return1) if %score% GTR 100 (@echo "输入的成绩分数不对:%score%(分数0-100之间),请再次输入:" @goto return1) if %score% GTR 90 (echo "优秀" @pause@exit)if %score% GTR 80 (echo "良好" @pause@exit)if %score% GTR 70 (echo "中等" @pause@exit)if %score% GTR 60 (echo "及格" @pause@exit)if (%score% LSS 60) (echo "不及格" @pause@exit)

效果和之前的一样,说明除了我之前的call,使用@符合也是可以的。

使用&也可以达到之前的效果:

@echo off:return1set score=set /p score=请输入成绩rem 用来判断是否格式正确if %score% LSS 0 (echo "输入的成绩分数不对:%score%(分数0-100之间),请再次输入:" goto return1) if %score% GTR 100 (@echo "输入的成绩分数不对:%score%(分数0-100之间),请再次输入:" @goto return1) if %score% GTR 90 (echo "优秀" &pause&exit)if %score% GTR 80 (echo "良好" &pause&exit)if %score% GTR 70 (echo "中等" &pause&exit)if %score% GTR 60 (echo "及格" &pause&exit)if (%score% LSS 60) (echo "不及格" &pause&exit)

@总结:

我们之前只知道echo off关闭回显,加入@之后,命令也会显示,只显示@后面名称处理的结果,显示结合我这个成绩分类,能达到和call的效果。

2、TITLE(标题)

设置cmd窗口的标题

比如:

@Echo offtitle 这是一个titlepause

点击运行之后:

3、find(查找)

E:\000dos\7笔记七>find /?在文件中搜索字符串。FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]/V 显示所有未包含指定字符串的行。/C 仅显示包含字符串的行数。/N 显示行号。/I 搜索字符串时忽略大小写。/OFF[LINE] 不要跳过具有脱机属性集的文件。"string" 指定要搜索的文本字符串。[drive:][path]filename指定要搜索的文件。如果没有指定路径,FIND 将搜索在提示符处键入的文本或者由另一命令产生的文本。

①、/V参数(可以理解为反选,和shell的grep -v功能类似)

②、不带参数:

不带参数就是查找含有字符串的行

③、/C只显示含有匹配到的字符串的行数

④、/i,不区分大小写

4、cd /d

之前我一直好奇为什么我在cmd中直接切换到e盘或者D盘就是不成功,但是在linux中确实可以随便切换的,然后我就好奇,试试,偶然发现带上/d参数就可以了。

E:\000dos\7笔记七>cd /?显示当前目录名或改变当前目录。CHDIR [/D] [drive:][path]CHDIR [..]CD [/D] [drive:][path]CD [..].. 指定要改成父目录。键入 CD drive: 显示指定驱动器中的当前目录。不带参数只键入 CD,则显示当前驱动器和目录。使用 /D 开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。如果命令扩展被启用,CHDIR 会如下改变:当前的目录字符串会被转换成使用磁盘名上的大小写。所以,如果磁盘上的大小写如此,CD C:\TEMP 会将当前目录设为C:\Temp。CHDIR 命令不把空格当作分隔符,因此有可能将目录名改为一个带有空格但不带有引号的子目录名。例如:cd \winnt\profiles\username\programs\start menu与下列相同:cd "\winnt\profiles\username\programs\start menu"在扩展停用的情况下,你必须键入以上命令。

比如我的切换效果:

从上面的效果来看,不带/d的时候,在自己盘符可以随便切换目录,但如果想跳转盘符确实需要加上/d就可以了,这点和shell有区别,不过可能因为Linux没有这个盘符区分的原因吧。

还有一点,只有cd时,返回的就是当前目录地址,就和shell的pwd的功能。

5、pushd 和 popd

pushd:保存当前的目录

popd:回到刚刚pushd的保存的目录。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。