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浏览器执行cmd命令打开本地exe,传递参数打开本地文件夹 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726854708h1040114.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论