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

时间:2020-03-12 07:23:26

标签: python python-3.x

我创建了一个脚本,该脚本可以从任务管理器上的命令行创建预定任务,问题是启动了某些过程而任务管理器上的命令行没有完整路径,因此我设法找到了该进程的位置行:

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

但是问题在于某些命令的打印位置如下:

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

其中一些是这样的:

slack.exe --type = gpu进程

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

"instead of"

1 个答案:

答案 0 :(得分:0)

要回答您的特定问题:

我如何从每个命令中剥离文件路径,并从此脚本的location变量中添加它

cmdline()返回调用过程的命令行作为字符串列表。第一项几乎始终是可执行文件的文件路径。正如您所指出的,有时它仅具有文件名,而没有可执行文件的绝对文件路径。您应该用exe()的结果替换第一项,该结果返回流程可执行文件的绝对文件路径。

for proc in psutil.process_iter():
    if proc.name() == "slack.exe":
        command = proc.cmdline()
        command[0] = proc.exe()

如果命令或命令的参数中有空格,则os.system可能会遇到问题。至少使用subprocess.Popen,以便您可以将其command作为列表传递,而不必费心使用' '.join(command)和担心空格双引号。

我将根据以下问题的答案创建计划任务:Is there a way to add a task to the windows task scheduler via python 3?