use Win32::OLE; use Win32::Process; use Cwd; ##下面枚举机器中正在运行的所有进程信息 $wmi = Win32::OLE->GetObject('winmgmts:\\\\.\\root\\cimv2');##两种方法都可以的 $plist = $wmi->InstancesOf("Win32_Process"); my $dir = getcwd; my $FilePath =$dir."\\杀死进程.txt"; print "file is哈 $FilePath"; my @FileContent = GetFileContent($FilePath); $n = 0; foreach $Proc (Win32::OLE::in( $plist )){ print $Proc->{'Name'},".\n"; my $name = $Proc->{'Name'}; my $ID = $Proc->{'ProcessID'}; print $Proc->{'ProcessID'},".\n"; my $test = <STDIN>; if($name ~~ @FileContent) { print $name; my $test = <STDIN>; Win32::Process::KillProcess($Proc->{'ProcessID'},0); } $n++; } sub GetFileContent { my $filePath = shift; if(!-e $filePath) { die "the $filePath does not exits $!"; } print "is in\n"; open (InputFile ,"$filePath" ) || die "can not read file $! \n"; my @InputArray; while(my $line = <InputFile>) { print "the line is $line\n"; my @Temp = split /,/,$line; push(@InputArray,@Temp); } @InputArray; }