我正在尝试编写一个搜索我的网络卷并返回路径和文件列表的脚本。然后,我想在运行Windows资源管理器搜索的子进程中使用该列表,允许用户将文件从搜索浏览器拖放到任何地方。我挂断的地方是将变量(列表)传递给子流程字符串。
示例:
foo = 'returned list'
subprocess.Popen(f'explorer /root,"search-ms:query={foo}"')
该字符串是Windows资源管理器搜索参数
的一部分search-ms:parameter=value[¶meter=value]&
来自MSDN参数值参数入门。 https://msdn.microsoft.com/en-us/library/windows/desktop/ff684385(v=vs.85).aspx
如果我使用特定参数运行子进程字符串,比如genericFileName.fileExt,并且文件存在:
subprocess.Popen(f'explorer /root,"search-ms:query=genericFileName.fileExt"')
子流程启动资源管理器并显示文件
当我尝试使用变量时,子流程会打开资源管理器,但不会返回搜索结果。我希望能够在子流程字符串
中使用变量所以
"search-ms:query={foo}"
{foo}是子流程字符串
中的变量非常感谢任何帮助。
再次感谢您
答案 0 :(得分:0)
想通了:
import subprocess
filePath = 'someFile.ext'
localPath = r'C:\someDirectory'
cmd = r'explorer /root,"search-ms:query=%s&crumb=folder:%s&"'
subprocess.Popen(cmd % (filePath, local_path))