Python 从任务管理器创建计划任务
我创建了一个脚本,用于从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进程 如何从每个命令中删除文件路径,并从该脚本的位置变量中添加它: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进
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)
和担心空格双引号
我将根据此问题的答案创建计划任务: