bat中如何添加注释

bat中如何添加注释,第1张

Rem使您可以在批处理文件或配置文件中加入注释。

语法rem

[Comment]参数Comment指定要作为注释的任何字符串。/?在命令提示符下显示帮助。

注释?

使用

echo

命令显示注释

rem

命令不在屏幕上显示注释。必须在批处理或

Config.nt

文件中使用

echoon

命令才能在屏幕上显示注释。

对批处理文件注行键橘释的限制

在批处理文件注释中不能使用重定向字符“亮纤(”或“)”或管线

(|)。

使用

rem

增加垂直间距

您可以使用没有注释的

rem

为批处理文件增加垂直间距,也可以使用空行来增加间距。在处理批处理程序时会忽略空行。

示例以下示例显示为解释和垂直间距使用注释的档团批处理文件:

@echo

off

rem

This

batch

program

formats

and

checks

new

disks.

rem

It

is

named

Checknew.bat.

rem

echo

Insert

new

disk

in

drive

B.

pause

format

b:/v

chkdsk

b:

要在

Config.nt

文件中

prompt

命令之前添加说明性注释,请在

Config.nt

中添加下面的行:

加个自动刷新功能还要调用吗?

是不是先建立xxx.bat?再建一个xxx.vbs?这样做的目的是什么呢?是不是多此一举了?其实很多人不明白F5按一下键的事为什么还要多此一举弄个自动刷新,其实问这个问题的人很聪明。我来给你们说一说,vbs自动刷新的作用。

首先,我们在执行一系列的命令之后,可能有些东西从视觉上不能实时生效,但是呢为了保证后续一系列的命令100%顺利执行,那么就需要自动刷新一下来解决,当然,这整个脚本都必须是在隐藏命令窗口的条件下,自动刷新才能生效,因为我们要保证此时我们的鼠标指针是处在桌面上的,当我们从桌面打开这个批处理文件的时候就意味着它已经处于桌面,如果是显窗执行,那么刷新代码是会跑空灶睁的;此外刷新命令还有一个作用,比方说,我正在运行一个不是实时隐镇岁更新的通讯窗口(这个通讯窗口一定是要支持F5键物理刷新的),两个人的信息交流每次都要对窗口手动刷新一下,那么只要我们处于通讯窗口,可以开一个每x秒刷新一次的vbs脚本;此外,比如我们向某一个服务端提交通讯数据之后需要刷新查看反馈结果是否成功,也可以应用这个批处理自动刷新功能,比方说,我现在要向一个服务端每3分钟提交一次讯息,每提交一次等待3秒刷新一下通讯窗口防止链接中断或者对方的回复无法更新到我们的对话窗口,那么我就会写一个固定的提交列表,每一次提角做一个定时器,那么和自动刷新组合起来就是:定时信息内容+定时刷新的一个组合循环。所以说,不要小看一句简单的自动刷新句子,它的应用场景非常广泛,就是看你会不会活用。楼主的想法或是应用这个功能的意图是不是我所说的呢?

这里给你句子:

Set Shell=WScript.CreateObject("WScript.Shell") 

WScript.Sleep 0

Shell.SendKeys "{F5}"

第一行:调用模拟按键

第二行:定时器,每1000=1秒,0=不定时,不定时可以直接去掉这一行

第三行:模拟按下F5键位

顺便提一下:VBS中是不能用@ECHO OFF语句的,可能会报错,VBS默认是无框执行的。

最佳答案的方法是通过隐藏运行的bat批处理调用自动刷新vbs文件来实现的,既然vbs自身能直接实现,为什么不直接用vbs编译呢?然后,如果你中间需要执行的文件特别多,最好是通过vbs调用bat来做,因为bat的命令相对来说随性一点,但旅银是有很多必要的东西放在bat中是不能实现的。比方说,如果你最终想利用bat和vbs组合出来一个小工具,然后封包成EXE来执行,以好压自解压封包为例。那么,你需要做的是隐藏命令窗口,但是一旦隐藏了命令窗口,这意味着你在bat中编写的对话框全部都会失效。而通过vbs制作的对话框以及d窗则不会被隐藏,所以建议使用vbs调用bat来写东西,当然这只是一个点,还有更多的差异这里就不多说了。我给个实例如下:

通过vbs调用bat,然后封包成exe

vbs示例代码如下:

msgbox "大家好,我系渣渣辉",title,"贪玩蓝耶!"

msgbox "装备全靠打",title,"一键回收"

msgbox "跟我一起行动吧!",title,"爆将备啦!"

Set ws = CreateObject("Wscript.Shell") 

ws.run "cmd /c Cout1.bat",vbhide,True 

Set Shell=WScript.CreateObject("WScript.Shell") 

WScript.Sleep 3000

Shell.SendKeys "{F5}"

msgbox "干掉大BOSS",title,"赶紧回血!"

Set ws = CreateObject("Wscript.Shell") 

ws.run "cmd /c Cout2.bat",vbhide,True 

Set Shell=WScript.CreateObject("WScript.Shell") 

WScript.Sleep 3000

Shell.SendKeys "{F5}"

msgbox "终于干掉啦!",title,"你心动了吗"

CreateObject("scripting.filesystemobject").deletefile wscript.scriptfullname

“True”表示执行完同一行中调用的命令关闭之后才往下执行,如果想几个bat命令同时执行,我们可以直接去掉,那么会同时打开多个bat脚本执行,但是,如果两个或多个bat命令同时对一个文件执行,必然会出错。

最后一句是在用户解压运行之后程序自杀,等于在bat中的句子“del %0”

补充内容:利用好压或者winrar将批处理组合封包成exe的方法

首先,我们在做封包之前需要明白,自解压的exe不管是什么内容,只要自定义图标了,都是在安全软件的查杀标准安全范围之外的,几乎所有杀软都不承认自解压打包的exe可执行文件的安全性。如果你不是很在意这个很烦的提示,那么就按照下面的方法去做,如果先不然安全软件查杀,那么就需要使用exe电子书工具生成的界面,然后将所有批处理文件打包到电子书附件中去,然后通过按钮链接到附件就能够实现不报毒,在压缩时不修改图标也不会报毒,出这两种方法之外,还可以使用易语言或其他简易的编程工具做一个简单的界面,然后将所有原始格式(bat/vbs)批处理文件放到同一个文件夹下,然后通过按钮简单的调用。以下只列举以好压为例的打包方法:

以下是一个简单的vbs+bat组合小工具的文件内容截图

大家可以注意到两个地方,一个是上面提及的自我删除语句,第二个就是在bat文件中用到的ping语句,这里其实是可以不用的,之所以会每隔一道命令就ping1秒,是为了不导致卡窗口,当然隐藏执行的情况下就算是卡窗口也看不见,但是一旦卡住就会瞬间占用系统内存资源,虽然命令都是从上往下执行的,但是如果不ping一下,就是一瞬间d一堆窗口,主要是cmd命令执行间隙非常短。除了这样,我们也可以利用在vbs中的执行等待语句“True”来解决,那么我们就要把每一条bat命令分别做成一个bat批处理文件,有多少命令就做多少个文件,在vbs调用中,依然是下面这道命令:

Set ws = CreateObject("Wscript.Shell") 

ws.run "cmd /c 某某文件的前缀.某某文件的后缀",vbhide,True

很明显,这样就显得很烦琐了,那么还是用PING吧,当然,对批处理用到出神入化的人可能会想到更合理的方案。但是,以上的两个方案对新手而言还是比较容易上手的。

接下来我就要将这两个文件用好压封包成exe了:

接下来是选择配置方案第一页:

然后是自解压选项配置,安装向导模块选图形界面自解压(通过后面的设置可以隐藏掉)分别对下图中被框选的选项卡进行配置:

请看三个选项卡的配置:

然后点击确定,关闭选项卡,开始压缩,结果如下图:

那么,我们来测试一下这个exe文件的运行是否成功:

那么本次制作的小工具是成功的,这里顺便把实例的两个文件代码贴这里,分别以记事本保存为vbs/bat后缀即可,有兴趣的朋友可以试试!

xxx.vbs

msgbox "本工具可修复的问题包括:"+chr(13)+"1.鼠标指针长时间无响应;"+chr(13)+"2.鼠标双击失灵;"+chr(13)+"3.鼠标左键点击d出属性;"+chr(13)+"4.剪切板失效;"+chr(13)+"5.其他更多鼠标故障。",title,"感谢您使用!"

msgbox "即将为您修复鼠标故障!请点击确定继续!",title,"温馨提示"

msgbox "请您在每次d出对话框之后点击“确定”!",title,"温馨提示"

Set ws = CreateObject("Wscript.Shell") 

ws.run "cmd /c Cut.bat",vbhide,True 

msgbox "修复工作执行完毕!请稍后尝试问题是否解决!",title,"修复完成"

msgbox "如果问题尚未解决,请联反馈给我免费协助您处理!",title,"如果修复失败怎么办"

CreateObject("scripting.filesystemobject").deletefile wscript.scriptfullname

xxx.bat

regsvr32 urlmon.dll    

ping -n 1 127.0.0.1  

regsvr32 actxprxy.dll   

ping -n 1 127.0.0.1

regsvr32 oleaut32.dll 

ping -n 1 127.0.0.1  

regsvr32 shell32.dll   

ping -n 1 127.0.0.1 

regsvr32 jscript.dll   

ping -n 1 127.0.0.1

regsvr32 msi.dll   

ping -n 1 127.0.0.1

cd C:/Progra~1/Common~1/System/Ole DB/regsvr32 oledb32.dll

ping -n 1 127.0.0.1   

regsvr32 C:/Progra~1/Common~1/System/ado/msado15.dll 

del %0

至于这个问题:

无论是bat还是vbs脚本语言都只能做到模拟键盘按键,而鼠标不同,光标的位置是不确定的,如果说我们想要实现模拟鼠标的右键功能,那么前提就是我们必须获取到鼠标当前的坐标,然后需要将鼠标切换到指定的需要执行刷新窗体或桌面,也就是说,我们无论是模拟按键F5还是模拟鼠标右键刷新,都需要保证让工作界面处于我们需要做刷新动作的界面。注意前面的那一句话:“获取光标当前的坐标”,这需要我们创建一个数据传递结构的框架来获取实时的坐标信息,然后才能判断出对应的菜单项所处的位置,而鼠标右键菜单又有一个特性,那就是可以由用户自行添加或减少右键菜单的快捷键,但用户又不能控制自行添加的快捷键所处的排序位置,刷新菜单项有可能会被顶掉,当然通常情况下不会影响到刷新按钮的排序位置,因为它排在第三,比较靠前。就算我们能够获取鼠标的精准坐标,如果你此时同时在 *** 作鼠标,那么这个位置就不对了,所以简单的vbs和bat理论上是无法实现模拟鼠标右键刷新的,至少我不会!但是在其他语言中,例如C#/C++/VB/DELPHI等编程语言中,可以实现极为短暂锁定鼠标-读取坐标-刷新-解除锁定。那么,按照你的意愿可以通过以上的调用形式,通过其它高级编程语言先将刷新动作写成可执行文件exe或者msi都是可以的,相对繁琐很多,不过你可以去下载一个别人做好的刷新动作可执行文件,然后再从脚本语言中调用,码字不易,希望能帮到你!我是一个不为悬赏作答的人,因为你已经采纳过了,因为我也比较喜欢空闲时倒腾这些东西,算得上一种业余爱好吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12564481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存