gpt4 book ai didi

windows - 如何在 Windows 资源管理器和命令行中设置不同的默认程序

转载 作者:可可西里 更新时间:2023-11-01 14:14:30 25 4
gpt4 key购买 nike

我有一些 ruby​​ 脚本,我想为同一个文件使用 2 个不同的默认程序,一个程序如果我在 Windows 资源管理器中双击它只是为了编辑代码(例如在 Sublime Text 中),但是当我运行它时从命令行我希望脚本被执行。我正在使用 Windows 10。

到目前为止,我已经为 windows explorer sublime text 设置了默认程序,因此脚本可以正常打开。

在命令行我已经设置

E:\projects\Ruby>assoc .rb
.rb=Ruby.File

E:\projects\Ruby>ftype Ruby.File
Ruby.File=C:\bin\ruby200\bin\ruby.exe "%1" %*

我还设置了 .RB en PATHEXT 环境变量,所以我只需键入脚本的名称。但问题是,当我这样做时,它会启动 Sublime Text 而不是运行脚本。

如果我从 Windows 资源管理器更改默认程序,它仅从命令行运行,但如果我双击它,当然它不会打开 sublime text。

那么是否可以有 2 个不同的默认程序?当我双击某个脚本时,一种形式的命令行和另一种形式的 Windows 资源管理器?

最佳答案

使用 GUI 并不容易,但可以通过命令行完成。首先,您必须使您的协会动态。为此,您必须为包含 .rb 文件关联的注册表项使用 REG_EXPAND_SZ 值类型。 REG_EXPAND_SZ 不会按字面意义使用,而是会扩展(=环境变量替换为它们的实际值)。您可以使用 assoc 创建关联,但是您必须使用 reg add 来更改它,因为默认类型是 REG_SZ。程序路径必须是这样的:

%RUBY_PROGRAM% "%1" %*

%RUBY_PROGRAM% 是目前为止还不存在的环境变量的名称。现在你可以给那个变量一个默认值:

setx RUBY_PROGRAM c:\windows\notepad.exe

现在关闭您的命令提示符并去更改它的属性(从 GUI)。或者,您可以为您的修改 命令提示符创建一个新的快捷方式。要执行的命令必须是这样的:

%comspec% /k ""c:\setup_ruby.bat""

/k 允许您在启动时执行给定的批处理文件,在该批处理中您只需要为 %RUBY_PROGRAM% 环境变量设置不同的值:

SET RUBY_PROGRAM=C:\bin\ruby200\bin\ruby.exe

现在,每次运行该特殊快捷方式时,您都将直接执行 Ruby 程序。如果你不想创建一个特殊的快捷方式并且你想将这个规则应用到每个命令提示符(不管它在哪里打开)那么你可以添加一个条目到 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun 注册表项。

请注意,您可以将 ftype 放在启动脚本中(也提供一个 quit 批处理),但这会影响所有应用程序,直到您关闭命令行提示符(即使您在 Windows 资源管理器中双击文件)。

关于windows - 如何在 Windows 资源管理器和命令行中设置不同的默认程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com