vbs——脚本——程序语言——bat——vbs 批处理 强大——判断电脑小键盘是否开启,如果未开启,则发送按键w

如何用vbs实现:监控进程aaa.exe是否在运行,如果在运行,则自动运行一次bbb.bat,否则继续无限循环?_百度知道
如何用vbs实现:监控进程aaa.exe是否在运行,如果在运行,则自动运行一次bbb.bat,否则继续无限循环?
何用vbs实现:监控进程aaa.exe否运行运行则自运行bbb.bat运行则继续循环监控aaa.exe否运行限循环……注意:aaa.exe运行则运行bbb.batbbb.bat运行完毕自退aaa.exe关闭重启前都再运行该vbs脚本需要弹窗提示台运行即我知道用批处理容易实现我情况必须用vbs请高手支招激
提问者采纳
看像要做病毒?呵呵,代码:On&Error&Resume&NextDim&WS,WMI,Objs,OKSet&WS=WScript.CreateObject(&WScript.Shell&)Do&Set&WMI=GetObject(&WinMgmts:&)&Set&Objs=WMI.InstancesOf(&Win32_Process&)&For&Each&Obj&In&Objs&&If&Obj.Description=&aaa.exe&&Then&OK=True&&'面代码双引号填写要监视进程名.&Next&If&OK&Then&&WS.Run&Chr(34)+&bbb.bat&+Chr(34),0&'写存aaa.exe进程则运行程序.&&Exit&Do&End&IfLoop采纳哦!
按照上述代码运行后,发现如果aaa.exe退出后再次重新启动时,不会自动运行bbb.bat,必须关闭vbs进程再次打开,这时打开aaa.exe才会自动运行bbb.bat,就是说,上述代码只在aaa.exe第一次启动时才会运行bbb.bat,有没有办法实现每次aaa.exe启动时都自动运行一次bbb.bat?
是不是这样啊?如果是这样代码如下哦:On&Error&Resume&NextDim&WS,WMI,Objs,LisEXE,OpenEXE,HaveSet&WS=WScript.CreateObject(&WScript.Shell&)LisEXE=&notepad.exe&&'这行的双引号中填写要监视的进程名.OpenEXE=&bbb.bat&&'这里写如果存在aaa.exe这个进程则运行的程序.Do&Set&WMI=GetObject(&WinMgmts:&)&Set&Objs=WMI.InstancesOf(&Win32_Process&)&For&Each&Obj&In&Objs&&If&Obj.Description=LisEXE&Then&&&WS.Run&Chr(34)+OpenEXE+Chr(34),1&&&LisPro&&End&If&NextLoopPrivate&Sub&LisPro()On&Error&Resume&NextDo&Have=False&Set&WMI=GetObject(&WinMgmts:&)&Set&Objs=WMI.InstancesOf(&Win32_Process&)&For&Each&Obj&In&Objs&&If&Obj.Description=LisEXE&Then&Have=True&Next&If&Have&&True&Then&Exit&DoLoopEnd&Sub这个代码我一开始写的时候遇到了很多麻烦,试了很多种方法才想到这样弄.呵呵,采纳哦!
提问者评价
来自团队:
其他类似问题
为您推荐:
vbs的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁BAT批处理如何判断计划任务是否存在? - BAT求助&讨论 -
批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!
帖子14&积分28&技术0 &捐助0 &注册时间&
BAT批处理如何判断计划任务是否存在?
如题,如何判断计划任务是否存在?比如:存在或不存在分别返回一个数值或符号,以便后续计算。
帖子14&积分28&技术0 &捐助0 &注册时间&
难道没人知道?
帖子2899&积分6993&技术328 &捐助0 &注册时间&
schtasks /query复制代码
帖子14&积分28&技术0 &捐助0 &注册时间&
这个只能查询,但不能告诉代码结果(存在or不存在),我要根据结果执行不同操作。
帖子2899&积分6993&技术328 &捐助0 &注册时间&
你在有计划任务和没有计划任务的情况下,分别执行那个命令,把结果记录下来,看看有什么不同。根据这个结果来判断就行了。
条件判断的语法在这里:
帖子14&积分28&技术0 &捐助0 &注册时间&
本帖最后由 jwt2014 于
01:20 编辑
最终还是想出了一个变通的方法:
将query结果输出到文本文件(1.txt),再用findstr判断1.txt里有没有需要的计划任务名称,如果有就会生成一个含有指定文件名的文件2.txt。@echo off
setlocal enabledelayedexpansion
chcp 437
schtasks /query /tn ABC &1.txt
	findstr /m &ABC& 1.txt &2.txt
	for /f&&&tokens=1,*& %%a in (2.txt) do (		
		if &%%a&==&1.txt& (
			schtasks /delete /tn ABC /f
		)
	)
pause复制代码这里发现一个有趣的现象,在中文状态下不能使用schtasks /query /tn ABC,在英文状态下则可以输出查询结果。不知何故。
帖子2899&积分6993&技术328 &捐助0 &注册时间&
反正都要删除,干脆别判断了,直接删:schtasks /delete /tn ABC /f 2&nul复制代码
帖子14&积分28&技术0 &捐助0 &注册时间&
没错。想过这么干,还简单的多。但考虑批处理貌似几乎没有命令会返回不同的结果值,所以想找一个方法,便于以后应用。
前面是通过文件传递的方式进行,有没有可能直接将结果传给变量呢?
帖子14&积分28&技术0 &捐助0 &注册时间&
找到方法了,贴出来和大家共享。
/bat-command-to-variable.html
在批处理中,如果需要把一个命令的处理结果赋值给一个变量,可以使用如下方法:
for /f &delims=& %%t in ('命令字符串') do set str=%%t
echo %str%
当命令字符串中含有%时,需要转义。使用imagemagick中的identify命令获取图片的宽和高:
identify -format %wx%h demo.jpg
直接在命令行中使用上述命令可以看到输出了图片的高和宽,但是用它放在批处理脚本中来获取命令的输出结果,则失败,原因是命令字符串中含有%符号,它在批处理有特殊含义,所有需要转义,转义的方法是使用两个%%,正确的做法是:
for /f &delims=& %%t in ('identify -format %%wx%%h demo.jpg') set str=%%t
帖子2899&积分6993&技术328 &捐助0 &注册时间&
其实不用到处搜索,好好学习这两个帖子就行了:
帖子1738&积分4471&技术94 &捐助0 &注册时间&
set var=0
schtasks /query /tn ABC |findstr /m &ABC& &&set var=1
if %var%==1 schtasks /delete /tn ABC /f复制代码没有测试过!思路是这样的。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。
[通过 QQ、MSN 分享给朋友]bat——vbs—批处理—编程语言—用vbs打开 D:\a.exe 然后1秒后模拟键盘的enter键(作用于刚打开的程序)_百度知道
bat——vbs—批处理—编程语言—用vbs打开 D:\a.exe 然后1秒后模拟键盘的enter键(作用于刚打开的程序)
提问者采纳
dim&wshshellset&wshshell=createobject(&wscript.shell&)wshshell.run&&D:\a.exe&wscript.sleep&1000wshshell.sendkeys&&{ENTER}&
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
为您推荐:
编程语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁bat——vbs——批处理——编程语言——来实现把当前文件夹下的文件夹加上序号前缀(三位数,即_百度知道
bat——vbs——批处理——编程语言——来实现把当前文件夹下的文件夹加上序号前缀(三位数,即
bat——vbs——批处理——编程语言——实现前文件夹文件夹加序号前缀(三位数即
<img class="word-replace" src="/api/getdecpic?picenc=0af1始)序号原文件名用——连接求助批处理神
提问者采纳
BAT代码:@echo&off&setlocal&enabledelayedexpansionset&Num=1001for&/f&&delims=&&%%a&in&(&#39;dir&/ad/b&#39;)&do&(&&&&ren&&%%~a&&&!Num:~1!——%%~a&&&&&set&/a&Num+=1)pause
说错了,不是文件夹下的文件夹名,是文件夹下的文件名————我改成了如下@echo off&setlocal enabledelayedexpansionset Num=1001for %%a in (*.*) do (
ren &%%~a& &!Num:~1!——%%~a&
set &#47;a Num+=1)exit但是这样子的话,bat文件本身也被重命名了,怎么办
“添加序号.bat”
这个文件,帮忙改一下,美女
@echo off&setlocal enabledelayedexpansionset Num=1001for %%a in (*.*) do (&&& if /i not &%%~nxa&==&添加序号.bat& (&&&&&&&&ren &%%~a& &!Num:~1!——%%~a&&&& & & set /a Num+=1))exit
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
为您推荐:
其他1条回答
批处理合适般加序号码前缀自排序按期先排序吧(参见命令行dir/?帮助)@echo&off&cd/d&&%~dp0&set/a&n=1000for&/f&&delims=&&%%i&in&(&#39;dir/b/ad/od&#39;)do&(&&&&set/a&n+=1&&&&echo&%%i&&&&call&ren&&%%i&&&%%n:~1%%--%%i&)&set/p=完重命名&&nulping&-n&2&127.1&nul
编程语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 批处理执行vbs 的文章

 

随机推荐