dos中for命令算是一个复杂的命令了,但是也能给我们实现一些复杂的操作
最近在写dos命令的时候有这样一个需求:
查找windows中的某个进程,并通过dos命令taskkill结束该进程:
本来思路是这样的:通过tasklist命令列出所有的进程,通过管道命令传给find找到该进程,通过for命令在返回的信息中找到进程号,然后结束该进程,最后写出了这样的语句:
for /f " tokens=2 delims= " %%i in ('taskkill | find "java.exe"') do taskkill /f /pid %%i
结果发现执行的时候出错,原因在于in后面只能跟单个的命令,多个命令组合就会出错(大概是不支持多个命令组合在一起)
解决的办法:
将
taskkill | find "java.exe
语句写入一个bat文件,比如findpro.bat
然后将语句这样写:
for /f " tokens=2 delims= " %%i in ('findpro.bat') do taskkill /f /pid %%i
这样程序顺利执行了
这只是自己在使用过程中想到的一些方法,如果由更好的方法希望大家能够提出意见,多多交流
最近再更新一个方法:
@echo off
for /f "tokens=2 delims=:" %%i in ('dir/L^|find "itools"')do @echo %%i
pause
从当前目录中查找itools的文件或目录