Windows 在cmd shell范围内设置和限制文件类型关联

Windows 在cmd shell范围内设置和限制文件类型关联,windows,shell,batch-file,cmd,Windows,Shell,Batch File,Cmd,在Windows上,是否有方法创建cmd shell并在其范围内设置某些文件类型关联,而不影响系统范围内的文件关联。我想启动一个.bat文件来打开一个具有自己定义的文件类型关联的shell。。。。类似于以下伪.bat文件: [my_shell.bat] @echo off ~ASSOCIATE .jpg --> Google Image Viewer.exe ~ASSOCIATE .tga --> Adobe Photoshop ~ASSOCIATE .txt --> Komo

在Windows上,是否有方法创建cmd shell并在其范围内设置某些文件类型关联,而不影响系统范围内的文件关联。我想启动一个.bat文件来打开一个具有自己定义的文件类型关联的shell。。。。类似于以下伪.bat文件:

[my_shell.bat]
@echo off
~ASSOCIATE .jpg --> Google Image Viewer.exe
~ASSOCIATE .tga --> Adobe Photoshop
~ASSOCIATE .txt --> Komodo Edit
start cmd
因此,例如,我从生成的shell中打开的任何.txt文件都将在Komodo Edit中打开,而双击桌面上的.txt文件将使用定义的任何系统范围的文件关联打开它,如记事本。

这可以通过assoc和ftype完成


请注意assoc.jpg和ftype WhateverYouUseAsName的输出,以便您能够在需要时将其还原。这并不能完全解决问题,需要在系统范围内进行一些修改,但至少可以获得本地范围的关联。可以通过将文件类型与环境变量相关联,然后在当前cmd范围内修改环境变量来完成此操作

对于python文件,我们也遇到了同样的问题,并像这样解决了它。因此,首先将文件关联设置为变量路径

ftype Python.File=%PYTHON%\python.exe "%1" %*
然后在本地cmd范围内,将环境变量设置为适当的值

set PYTHON=C:\Python27\2.7.9

由于文件关联存储在注册表中,我看不到任何隔离此类更改的方法。这种效果可以通过创建自己的命令解析器来模拟,以捕获所需的文件类型,但这是一种痛苦。您可以编写批处理文件来更改系统范围的关联,然后再更改回来,但是没有方法在本地范围内更改它。请注意,这将是一个永久性的更改,除非您在另一个批处理文件中将其更改回以前的状态。它不像问题所描述的那样运行,但是问题的提问方式是不可能的。正如@foxidrive所说,问题是关于将文件类型关联限制在shell的范围内,这可能是不可能的。你的建议对整个系统都有影响。
set PYTHON=C:\Python27\2.7.9