Board logo

标题: 求助:通过bat文件杀cmd进程的问题 [打印本页]

作者: okzhsh01     时间: 2009-6-16 09:52    标题: 求助:通过bat文件杀cmd进程的问题

@echo off
copy %systemroot%\system32\cmd.exe %systemroot%\system32\tmp.exe /y
echo @echo off >tmp.bat
echo for /f %%i in ('tasklist') do if /i %%i==cmd.exe (taskkill /f /im cmd.exe) >>tmp.bat
echo pause >>tmp.bat
echo del %systemroot%\system32\tmp.exe>>tmp.bat
start tmp.exe /c tmp.bat

真的想不明白为什么启不动tmp.exe
我把最后一句改成start tmp.exe
就没问题,带参数启动杀CMD进程就不行
启动tmp.exe后再杀cmd.exe又没影响,不知道出错在哪里。求解
用CALL也不行……

[ Last edited by okzhsh01 on 2009-6-16 at 10:06 ]
作者: okzhsh01     时间: 2009-6-16 12:41
高手帮帮忙……
一个晚上就这样等过去了
很郁闷……
作者: Hanyeguxing     时间: 2009-6-16 14:20
echo for /f %%i in ('tasklist') do if /i %%i==cmd.exe (taskkill /f /im cmd.exe) >>tmp.bat
应该写成
echo for /f %%%%i in ('tasklist') do if /i %%%%i==cmd.exe (taskkill /f /im cmd.exe) >>tmp.bat
作者: okzhsh01     时间: 2009-6-16 15:16
非常感谢
查了下请问下是不是和
call echo 这个变量反复调用一样的原理?

能否介绍下%%%%I的来由?
作者: Hanyeguxing     时间: 2009-6-17 01:19
在echo 输出的字符中含有^ | & > >> < 时,前面要加转义符,输出%时,要加倍使用,例如要输出一个%,则应写成echo %% >han.txt,要输出%%i,则应写成echo %%%%i>han.txt.

对于",我们一般成对使用,在输出的时候没问题.如果是奇数个",则必须在某一"前加转义符^.
作者: rabit123     时间: 2009-6-19 02:36
@echo off
copy %systemroot%\system32\cmd.exe %systemroot%\system32\tmp.exe /y
echo @echo off >tmp.bat
echo tasklist ^| findstr /i "cmd.exe" ^&^& taskkill /f /im cmd.exe >>tmp.bat
echo pause >>tmp.bat
echo del %systemroot%\system32\tmp.exe>>tmp.bat
start tmp.exe /c tmp.bat