Python 从任务管理器创建计划任务

Python 从任务管理器创建计划任务,python,python-3.x,Python,Python 3.x,我创建了一个脚本,用于从task manager上的命令行创建schedueld任务,问题是某些进程在task manager的命令行上启动时没有完整路径,我通过这一行找到了进程的位置: location=psutil.Process(pid=int(pid)).exe() 但问题是,有些命令打印的位置如下: C:\Users\jacob\AppData\Local\slack\app-4.3.4\slack.exe--type=gpu进程 有些人喜欢这样: slack.exe--类型=gpu进

我创建了一个脚本,用于从task manager上的命令行创建schedueld任务,问题是某些进程在task manager的命令行上启动时没有完整路径,我通过这一行找到了进程的位置:

location=psutil.Process(pid=int(pid)).exe()

但问题是,有些命令打印的位置如下:

C:\Users\jacob\AppData\Local\slack\app-4.3.4\slack.exe--type=gpu进程

有些人喜欢这样:

slack.exe--类型=gpu进程

如何从每个命令中删除文件路径,并从该脚本的位置变量中添加它:

import psutil
import os
os.system("""powershell -command ""Unregister-ScheduledTask -TaskPath "\Lsports Tasks\" -a""")
commands = []
for proc in psutil.process_iter(['pid','name']):
  process = proc.info 
  if process['name'] == 'slack.exe':
     pid = process['pid']
     cmds = psutil.Process(pid=int(pid)).cmdline()
     cmda = ' '.join(cmds)
     cmd=os.path.split(cmda)
     print(cmd)


     commands.append(cmd)
     location = psutil.Process(pid=int(pid)).exe()
     print(location)

 i = 0
 for c in commands:
  i+= 1
  task = os.system(f"""SCHTASKS /CREATE /SC ONSTART /RU system /TN "Lsports Tasks\Lsports Runner{i}" /TR "{c}""".format(i,c=c))

要回答您的具体问题:

如何从每个命令中删除文件路径,并从该脚本的位置变量中添加它

cmdline()
以字符串列表的形式返回调用该进程的命令行。第一项几乎总是可执行文件的文件路径。正如您所指出的,有时它只有文件名,而没有可执行文件的绝对文件路径。您应该用
exe()
的结果替换第一项,该结果返回进程可执行文件的绝对文件路径

psutil.process\u iter()中的进程的
:
如果proc.name()=“slack.exe”:
command=proc.cmdline()
命令[0]=proc.exe()
如果命令或命令参数中有空格,您可能会遇到操作系统的问题。至少要使用
subprocess.Popen
,这样您就可以将它作为列表传递
command
,而不必使用
'.join(command)
和担心空格双引号

我将根据此问题的答案创建计划任务: