admin 管理员组

文章数量: 887021

我遇到的需求是通过浏览器,传递不同路径参数打开本地的文件夹。

多方参考,最后的实现方式是:通过执行cmd命令并传递命令行参数,调用本地exe,再通过exe打开本地文件夹。

注册表:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\openFolder]
@="URL:openFolder Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\openFolder\DefaultIcon]
@="cmd.exe,1"

[HKEY_CLASSES_ROOT\openFolder\shell]

[HKEY_CLASSES_ROOT\openFolder\shell\open]

[HKEY_CLASSES_ROOT\openFolder\shell\open\command]

@="cmd /c D:\\openFolder\\openFolder.exe %1"

# 最后需删除这些中文注释:

# cmd /c 是执行完命令后会自动关闭黑色弹窗

# cmd /k 执行完后不会自动关闭黑色弹窗,方便测试找错误

# openFolder 是我自己起的名字,可以随便全部一起替换掉

# D:\\openFolder\\openFolder.exe 即运行后面写好的本地exe

# %1 是命令行参数,后面可以把这些参数传递给exe,非常重要!

 新建一个txt文本后把上述代码粘贴进去,改txt后缀为reg,保存并双击写入电脑即可。

exe代码,语言是python:

# -*- coding: utf-8 -*-
import sys
import os
from urllib import parse
import win32api, win32con


def main():
    str1 = sys.argv[1]  # argv[1]就是参数
    str2 = parse.unquote(str1[str1.index('/') + 2:-1])  # url中文解码
    parameter = str2.split(',')  # 切割参数
    dir_path = r"D:\test" + '\\' + parameter[0] + '\\' + parameter[1] + r"\hh" + '\\' + parameter[2]
    if os.path.exists(dir_path):
        os.system('explorer ' + dir_path)
    else:
        win32api.MessageBox(0, "当前路径不存在:" + dir_path, "找不到路径", win32con.MB_OK)


if __name__ == "__main__":
    main()

我的实际需求会有很多判断、验证,已经在代码中省去并做了些隐藏,但是基本思路是这样子的。

python获取命令行参数参考:【Python学习 】Python获取命令行参数的方法_字节卷动的博客-CSDN博客_python 运行参数

其他语言百度 x语言获取命令行参数 即可。python可使用auto-py-to-exe工具将上述代码打包成exe文件。再将exe放到D:\\openFolder\\目录下(参考注册表写的路径)

vue写法:

<a :href="filePath" ref="folder" />

// filePath放到computed里计算生成
computed: {
      // 使用逗号来隔开参数。a,b,c 即三个参数
      return 'openFolder://' + this.a + ',' + this.b + ',' + this.c
    },
  },

之后点击a标签即可实现上述功能。

本文标签: 文件夹 命令 浏览器 参数 chrome