需要使用批处理文件或Power Shell为程序设置文件扩展名

时间:2016-09-11 09:28:40

标签: batch-file

我需要一种编程方法来将关联设置为安装程序的一部分。

我正在尝试设置文件扩展名,以便当用户双击该扩展名时,它会运行相关程序,在这种情况下为c:\ temp \ test.bat

我尝试在.bat文件中使用assoc和ftype命令但是当文件.003(仅用于测试目的)时,它仍然打开已经设置为该扩展的默认值的解包器程序。请参阅控制面板>程序>默认程序>设置关联的图像。如果我使用这个界面并更改与002文件关联的程序,那么当我双击test.002它运行test.bat时,它就可以工作。

我需要在安装中包含此关联,因此我需要能够在.bat文件中执行GUI中的操作。 .bat命令assoc和ftype似乎没有对图像中的GUI进行更改,仍然启动Unpacker而不是test.batenter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

我也未能成功使用assocftype命令。我放弃了,直接与注册表合作。

这是我从python关联的2个部分合并的注册表文件的示例。

第一部分:HKEY_CLASSES_ROOT\.py:将扩展名与文件类型相关联。 第二部分:其余部分:将文件类型与各种操作相关联。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.py]
@="Python.File"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\Python.File]
@="Python File"

[HKEY_CLASSES_ROOT\Python.File\DefaultIcon]
@="C:\\Python34\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\Python.File\Shell]

[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with IDLE]

[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with IDLE\command]
@="\"C:\\Python34\\pythonw.exe\" \"C:\\Python34\\Lib\\idlelib\\idle.pyw\" -e \"%1\""

[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pyscripter]
@="Edit with PyScripter"

[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pyscripter\command]
@="\"C:\\Program Files\\PyScripter\\PyScripter.exe\" \"%1\""

[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pythonwin]

[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pythonwin\command]
@="C:\\Python34\\Lib\\site-packages\\Pythonwin\\Pythonwin.exe /edit \"%1\""

[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle]
"MUIVerb"="&Edit with IDLE"
"Subcommands"=""

[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell]

[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell\edit35-32]
"MUIVerb"="Edit with IDLE 3.5 (32-bit)"

[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell\edit35-32\command]
@="\"C:\\Users\\dartypc\\AppData\\Local\\Programs\\Python\\Python35-32\\pythonw.exe\" -m idlelib \"%L\" %*"

[HKEY_CLASSES_ROOT\Python.File\Shell\open]

[HKEY_CLASSES_ROOT\Python.File\Shell\open\command]
@="\"C:\\WINDOWS\\py.exe\" \"%1\" %*"

[HKEY_CLASSES_ROOT\Python.File\shellex]

[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

您可以创建/生成此类文件,然后使用REG IMPORT myregfile.reg将值添加到注册表中。

但是您需要为此运行提升的命令提示符,否则您将获得“拒绝访问”。有很多链接到UAC /提升的shell / ...供您搜索。

特定扩展程序的最佳方式是:

  1. 使用windows
  2. 手动关联文件
  3. 运行regedit&查找上述键(扩展名为文件类型并搜索文件类型)
  4. 导出密钥,合并到单个.reg文件
  5. 随意破解:)
  6. 应用:

    当我不得不使用python portable安装python关联时,我就这样做了。 Python portable没有设置文件关联,因为没有安装程序。所以我将.py文件与它相关联,但是此处缺少该脚本文件的其他参数:

    [HKEY_CLASSES_ROOT\Python.File\Shell\open\command]
    @="\"C:\\WINDOWS\\py.exe\" \"%1\""
    

    我刚编辑了那个键并添加了缺少的%*所以python与参数一起工作。之后我导出了reg文件,我可以在其他机器上使用它。