Board logo

标题: at命令调用结束进程的bat为什么会失败 [打印本页]

作者: zerocq     时间: 2008-4-10 12:37    标题: at命令调用结束进程的bat为什么会失败
这是bat文件的代码

shutdown -s -t 300
for /f "tokens=1-5" %%a in ('tasklist /v /fi "imagename eq my.exe"^|find "11601179"^|^|goto :eof') do @tskill %%b

查找所有my进程中标题包含指定字符的进程pid,然后结束进程

在at命令下为什么无法无法结束进程,第一句shutdown命令是我临时加上去测试的

at命令下可以正常调用shutdown,第二句就不行

在命令提示符下运行这个bat文件可以正常结束进程

作者: zerocq     时间: 2008-4-10 16:58
没人帮忙么???

作者: bigfaint     时间: 2008-4-10 17:07
恩,没有试过,我感觉应该跟执行计划任务的用户有关。at是用system执行的,你把第二行改一下,把tasklist echo出来,看看有没有不同。

作者: zerocq     时间: 2008-4-11 00:24
Originally posted by bigfaint at 2008-4-10 17:07:
恩,没有试过,我感觉应该跟执行计划任务的用户有关。at是用system执行的,你把第二行改一下,把tasklist echo出来,看看有没有不同。


我尝试echo %b>某个文件,但系统在指定时间执行后全盘都没有找到这个生成的文件

好奇怪
<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0"><img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">

作者: HAT     时间: 2008-4-11 06:30
at命令创建的计划任务会以SYSTEM用户的身份来执行,不知道为什么不能杀死指定进程,期待高人解答。

变通的方法是用schtasks创建一个以当前用户身份来执行的计划任务:
schtasks /create /ru "%username%" /sc daily /mo 1 /tn MyTask /tr C:\test\test.bat

如果想自动输入密码(假设密码是abcdefg),可以用echo:
echo abcdefg|schtasks /create /ru "%username%" /sc daily /mo 1 /tn MyTask /tr C:\test\test.bat

另外,杀死指定进程其实不用你写的那么复杂,taskkill命令足矣:
taskkill /fi "windowtitle eq 11601179*"