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