【问题标题】:Adding "Open Anaconda Prompt here" to context menu (Windows)将“在此处打开 Anaconda 提示”添加到上下文菜单 (Windows)
【发布时间】:2018-03-21 15:11:41
【问题描述】:

我想在我的上下文菜单(Windows 7 和 10)上添加一个选项,以便在我右键单击文件夹时将 Anaconda 提示打开到文件位置,但我无法确定正确的注册表项。

我知道该怎么做:

  • 在上下文菜单中添加一个项目,在文件夹位置打开一个普通命令窗口
  • 从 cmd 打开 Anaconda 提示符(运行他们的“activate.bat”文件)

我不知道如何将这些步骤组合到一个注册表项中,以便我可以打开 Anaconda 提示符,然后在该提示符中 cd 到当前文件夹。但也许我用错了方法。

感谢互联网专家的帮助。

【问题讨论】:

    标签: windows anaconda contextmenu registrykey


    【解决方案1】:

    在最近的 Anaconda 版本中(我在 conda 4.5.5),他们更改了 Anaconda Prompt 的行为和快捷方式,因此新程序实际上比 bdforbes 描述的要简单一些。

    在文件夹中启动 Anaconda Prompt 的新方法是

    cmd.exe /K %%USERPROFILE%%\AppData\Local\Continuum\Anaconda3\Scripts\activate.bat
    

    pushd是改变当前目录,%V是当前目录,/K是运行命令。

    因此不再需要修改后的cwp2.py。将以下内容放入 .bat 文件并以管理员身份运行以将所需的密钥添加到注册表中(Thibaud Ruelle 在 cmets 中发布到另一个答案的 gist 的修改版本)

    REG ADD HKCR\Directory\Background\shell\Anaconda\ /ve /f /d "Anaconda Prompt Here"
    REG ADD HKCR\Directory\Background\shell\Anaconda\ /v Icon /f /t REG_EXPAND_SZ /d %%USERPROFILE%%\\Anaconda3\\Menu\\Iconleak-Atrous-Console.ico
    REG ADD HKCR\Directory\Background\shell\Anaconda\command /f /ve /t REG_EXPAND_SZ /d "%windir%\System32\cmd.exe pushd "%V" "/K" %%USERPROFILE%%\Anaconda3\Scripts\activate.bat %%USERPROFILE%%\Anaconda3"
    REG ADD HKCR\Directory\shell\Anaconda\ /ve /f /d "Anaconda Prompt Here"
    REG ADD HKCR\Directory\shell\Anaconda\ /v Icon /f /t REG_EXPAND_SZ /d %%USERPROFILE%%\\Anaconda3\\Menu\\Iconleak-Atrous-Console.ico
    REG ADD HKCR\Directory\shell\Anaconda\command /f /ve /t REG_EXPAND_SZ /d "%windir%\System32\cmd.exe pushd "%V" "/K" %%USERPROFILE%%\Anaconda3\Scripts\activate.bat %%USERPROFILE%%\Anaconda3"
    

    【讨论】:

    • 值得注意的是,这个答案取决于 Anaconda 的安装位置(我很欣赏这似乎很明显,但我花了一段时间才弄清楚)。为此,我的两个command HKEY 变成了C:\WINDOWS\System32\cmd.exe pushd "%V" "/K" "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\Scripts\activate.bat" "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64",图标位于"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Anaconda3_64\\Menu\\Iconleak-Atrous-Console.ico"。您可以通过检查 Anaconda 快捷方式的属性来找到它。
    • 对我来说,以下只是有效的:cmd.exe /K %%USERPROFILE%%\AppData\Local\Continuum\Anaconda3\Scripts\activate.bat。不需要pushdactivate.bat 后面的参数。但是你仍然需要确保activate.bat 的路径是正确的
    • @Bob 的评论还回避了批处理文件中未转义的内引号。
    • 由于引号问题,使这个脚本适应 miniconda 的目录比预期的要困难得多(对于绝对路径,它似乎需要更多的引号,你需要一些 cmd 行的经验才能正确)。不管怎样,这对我有用: ... REG_EXPAND_SZ /d "%windir%\System32\cmd.exe "/K" C:\ProgramData\Miniconda3\Scripts\activate.bat C:\ProgramData\Miniconda3"
    • Windows 10 + conda 4.7,上面的代码不起作用。我们必须在 V 之前将“%”加倍。否则其他一切都是一样的(除了可能将 Anaconda 路径更改为 activate.bat,取决于您的安装)
    【解决方案2】:

    更新answer by Filip S. 可能在更新的 Anaconda 版本上运行得更好。

    另一个更新:我修复了在驱动器根目录中使用此启动器的问题(例如 C:\D:\)。这非常小:注册表项中添加了一些空格(相关部分:"%V "),因此尾部反斜杠不会混淆 Windows。

    原帖

    我也想要这个功能,所以我做到了。 下面概述了关键步骤,并在下面进行了解释。

    解决方案

    警告:除非您能够轻松编辑注册表并且使用的是非生产系统,否则请勿继续操作。显然不要运行我告诉你的一切,检查它没有做任何邪恶的事情。你不认识我!

    1。修改设置工作目录的Anaconda脚本

    找到 Anaconda 脚本cwp.py(我的在C:\Users\bdforbes\Anaconda3\)并将其复制到同一目录下的cwp2.py

    修改 cwp2.py 以接受目标路径作为第二个参数并切换到该目录:

    prefix = sys.argv[1]
    cwd = sys.argv[2]
    args = sys.argv[3:]
    
    ... (PATH setting code)
    
    (REMOVE OLD LOGIC THAT CALLED os.chdir)
    
    os.chdir(cwd)
    sys.exit(subprocess.call(args, env=env))
    

    完整代码在这里:https://gist.github.com/bdforbes/9ef59cd01c22acefc20c5c92bd9550ae

    2。添加注册表项

    在注册表中,转到HKEY_CLASSES_ROOT\Directory\Background\shell\并添加一个默认值为“Open Anaconda Prompt Here”的键Anaconda,以及一个具有以下默认值的子键command

    C:\Users\bdforbes\Anaconda3\pythonw.exe C:\Users\bdforbes\Anaconda3\cwp2.py C:\Users\bdforbes\Anaconda3 "%V " cmd.exe "/K" C:\Users\bdforbes\Anaconda3\Scripts\activate.bat C:\Users\bdforbes\Anaconda3
    

    将相同的条目添加到HKEY_CLASSES_ROOT\Directory\shell\

    我已经输入了.reg file here,您只需搜索替换bdforbes 并将其替换为您的Windows 帐户名。 在未检查之前不要运行.reg 文件!

    3。使用您喜欢的新上下文菜单项

    右键单击一个文件夹。您应该在那里看到新条目,它可以让您打开一个新的 Anaconda 提示符。

    【讨论】:

    • 您可以运行 .bat 文件而不是 .reg 文件以避免替换用户名。我把代码放在this gist
    • Anaconda Prompt 的工作方式似乎发生了一些变化,所以我发现有效的新 regedit 命令是%windir%\System32\cmd.exe pushd "%V" "/K" C:\Users\username\Anaconda3\Scripts\activate.bat C:\Users\username\Anaconda3。所以修改后的cwp2.py 不再需要了。
    • 感谢您告诉我,我会检查一下。您使用的是哪个版本的 Anaconda?
    • 不确定 Anaconda 的哪些部分是相关的,但我在 conda 4.5.5。我在下面发布了完整的回复,但请随时编辑您的答案:)
    • @bdforbes 我们可以将 Anaconda 提示符中的当前目录更改为 C: 驱动器以外的任何目录吗?好像是不可能的。这不是强迫用户将每个脚本都放在 C: 中吗?
    【解决方案3】:
    1. 运行注册表编辑器 (regedit.exe)
    2. 转到HKEY_CLASSES_ROOT > Directory > Background > shell
    3. 添加一个名为AnacondaPrompt的键并将其值设置为Anaconda Prompt Here
    4. 在此键下添加一个名为 command 的键,并将其值设置为 cmd.exe /K C:\Users\user\Anaconda3\Scripts\activate.bat 将位置更改为 Anaconda 安装所在的位置。

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多