
USE master
go
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
DROP TABLE #temp
CREATE TABLE #temp
(
id INT IDENTITY(1, 1)
NOT NULL
,Proc_info NVARCHAR(MAX) NULL
,CONSTRAINT pk_id PRIMARY KEY ( id ASC )
)
--insert data into temp table
INSERT INTO #temp
( Proc_info )
EXEC master..xp_cmdshell 'tasklist /v'
--delete the wrong records
DELETE FROM #temp
WHERE Proc_info IS NULL
OR Proc_info LIKE '%==========%'
OR ID = 2
GO
--create a splite function
CREATE FUNCTION F_split_V2 ( @S NVARCHAR(4000), @i INT )
RETURNS NVARCHAR(100)
AS
BEGIN
IF @i = 1--Image_name
BEGIN
IF PATINDEX('%.exe%', @s) = 0
SET @s = RTRIM(LEFT(@s, PATINDEX('%[0-9]%', @s) - 1))
ELSE
SET @s = RTRIM(LEFT(@s, PATINDEX('%.exe%', @s) + 4))
END
ELSE
IF @i = 2--Pid
BEGIN
IF PATINDEX('%.exe%', @s) = 0
SET @s = STUFF(@s, 1, PATINDEX('%[0-9]%', @s) - 1, '')
ELSE
SET @s = LTRIM(SUBSTRING(@s,
PATINDEX('%.exe%', @s) + 4,
LEN(@s)))
SELECT @s = RTRIM(LEFT(@s, PATINDEX('%[^0-9]%', @s) - 1))
END
ELSE
IF @i = 3--Session_name
BEGIN
IF PATINDEX('%.exe%', @s) = 0
SET @s = STUFF(@s, 1, PATINDEX('%[0-9]%', @s) - 1,
'')
ELSE
SET @s = LTRIM(SUBSTRING(@s,
PATINDEX('%.exe%', @s)
+ 4, LEN(@s)))
SELECT @s = STUFF(@s, 1, PATINDEX('%[^0-9]%', @s) - 1,
'')
,@s = RTRIM(LEFT(@s,
PATINDEX('%[0-9]%', @s) - 1))
END
ELSE
IF @i = 4--Session#
BEGIN
IF PATINDEX('%.exe%', @s) = 0
SET @s = STUFF(@s, 1,
PATINDEX('%[0-9]%', @s) - 1, '')
ELSE
SET @s = LTRIM(SUBSTRING(@s,
PATINDEX('%.exe%', @s)
+ 4, LEN(@s)))
SELECT @s = STUFF(@s, 1,
PATINDEX('%[^0-9]%', @s) - 1,
'')
,@s = STUFF(@s, 1,
PATINDEX('%[0-9]%', @s) - 1, '')
,@s = RTRIM(LEFT(@s,
PATINDEX('% %', @s) - 1))
END
ELSE
IF @i = 5--memory
BEGIN
IF PATINDEX('%.exe%', @s) = 0
SET @s = STUFF(@s, 1,
PATINDEX('%[0-9]%', @s) - 1,
'')
ELSE
SET @s = LTRIM(SUBSTRING(@s,
PATINDEX('%.exe%',
@s) + 4, LEN(@s)))
SELECT @s = STUFF(@s, 1,
PATINDEX('%[0-9]%', @s) - 1,
'')
,@s = STUFF(@s, 1,
PATINDEX('%[^0-9]%', @s)
- 1, '')
,@s = STUFF(@s, 1,
PATINDEX('%[0-9]%', @s) - 1,
'')
,@s = STUFF(@s, 1,
PATINDEX('%[1-9]%', @s) - 1,
'')
,@s = RTRIM(LEFT(@s,
PATINDEX('%k%', @s)
- 1))
END
ELSE
IF @i = 6--user_name
SELECT @s = STUFF(@s, 1,
PATINDEX('%[0-9]%', @s) - 1,
'')
,@s = STUFF(@s, 1,
PATINDEX('%[^0-9]%', @s)
- 1, '')
,@s = STUFF(@s, 1,
PATINDEX('%[0-9]%', @s) - 1,
'')
,@s = STUFF(@s, 1,
PATINDEX('%[1-9]%', @s) - 1,
'')
,@s = RTRIM(SUBSTRING(@s,
PATINDEX('%\%',
@s) + 1, 18))
ELSE
IF @i = 7--cup_time
SELECT @s = SUBSTRING(@s,
PATINDEX('%[0-9]:[0-9][0-9]:[0-9][0-9]%',
@s), 8)
ELSE
SELECT @s = RIGHT(@s,
CHARINDEX(' ',
REVERSE(@s), 3)
- 1)
RETURN @s
END
go
SELECT dbo.F_split_V2(Proc_info, 1) AS image_name
,dbo.F_split_V2(Proc_info, 2) AS PID
,dbo.F_split_V2(Proc_info, 3) AS session_name
,dbo.F_split_V2(Proc_info, 4) AS session#
,dbo.F_split_V2(Proc_info, 5) + 'K' AS Memory
,dbo.F_split_V2(Proc_info, 6) AS User_name
,dbo.F_split_V2(Proc_info, 7) AS cpu_time
,'xp_cmdshell ''taskkill -IM ' + dbo.F_split_V2(Proc_info, 1) + ' /f''' AS script
FROM #temp

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现