特定用户的taskkill

时间:2013-07-20 20:13:13

标签: batch-file batch-processing

如何杀死我们使用这两个代码的同一用户的多个任务

代码no1

@ECHO OFF

TASKKILL /F /IM explorer.exe
cls
Echo "Please Specify the User ID"

Set /p u=
set USER=%u%@%userdomain%


Echo "Please Specify the PASSWORD"
runas /user:%USER% Explorer.exe
cls

echo "Press any key to Switch Back to Default USer Profile"
Pause
Echo "please enter your password again for verification"
runas /user:%USER% C:\switch.bat
pause
cls
start %windir%\explorer.exe
exit

代码no2(此文件名为Switch.bat)

@echo off

TASKKILL /F /IM Explorer.exe

exit

实际上创建它的背后的一般想法是在win XP中切换,如win 7,而不是注销 问题是当它切换回原始配置文件时 第二个用户的所有任务都没有停止

是为任何正在运行的特定用户停止所有任务的方法

2 个答案:

答案 0 :(得分:0)

您可以尝试使用tskill。它可以终止进程并接受用户ID作为参数:

为同一个用户杀死资源管理器

  setlocal enabledelayedexpansion
    set exe_name=Explorer
    for /f "skip=1 tokens=1,2,3" %%S in ('query user') do (
            set "current_user=%%S"

            if "!current_user:~0,1!" EQU ">" (
                    for /f "tokens=2 delims= " %%M  in ('tasklist ^| find ^"%exe_name%^"') do (
                            tskill "%%M"    /ID:%%U
                    )

            )
    )
    endlocal
    goto :eof

对于所有其他用户:

       setlocal enabledelayedexpansion
set exe_name=Explorer
        for /f "skip=1 tokens=1,2,3" %%S in ('query user') do (
                set "current_user=%%S"

                if "!current_user:~0,1!" NEQ ">" (
                        for /f "tokens=2 delims= " %%M  in ('tasklist ^| find ^"%exe_name%^"') do (
                                tskill "%%M"    /ID:%%U
                        )

                )
        )
        endlocal
        goto :eof

答案 1 :(得分:0)

您可以杀死此类特定用户的所有进程(前提是您拥有管理员权限):

@echo off
taskkill /fi "username eq %1" /t /f

运行如下脚本:

C:\>script.cmd joe

但是,为什么不简单地关闭第二个用户而不是切换回去?那将是明显的(也是更清洁的)解决方案。作为管理员,您甚至可以在命令行上注销其他用户:

logoff session

您可以使用query session枚举会话(如果前者不起作用,则为qwinsta):

@echo off

for /f "tokens=3" %%s in ('qwinsta ^| find /i "joe"') do (
  logoff %%s
)