【问题标题】:Get path where i used the Context Menu获取我使用上下文菜单的路径
【发布时间】:2021-02-26 13:07:55
【问题描述】:

我想在 Win10 上下文菜单中添加一个选项,该选项在我右键单击的文件夹中执行批处理文件。我在 "\HKEY_CLASSES_ROOT\Directory\Background\shell" 下的 Regedit 中为此创建了一个密钥,并在 command 下创建了一个子密钥。在command 键下,我添加了命令cmd /c "start C:\Users\me\Documents\bat\file.bat"。这工作正常,但它只执行C:\Users\me\Documents\bat\ 中的批处理文件,但我希望它在我右键单击的文件夹中执行批处理文件。想先把批处理文件复制到我要执行的文件夹中,但是不知道怎么获取路径。

【问题讨论】:

  • 为什么要复制你的bat文件而不是通过执行cd clicked_folder来改变工作目录?

标签: windows batch-file contextmenu explorer


【解决方案1】:

要在一个目录中执行你的bat文件,你不必复制它,你可以改变工作目录。

将您的注册表命令更改为:

cmd /c "start C:\Users\me\Documents\bat\file.bat %w"

这会将菜单文件夹作为参数传递给您的批处理文件。 在 bat 文件的开头添加目录更改:

cd /d %1

【讨论】:

    【解决方案2】:

    如果您在命令提示符处输入以下内容:

    %SystemRoot%\System32\reg.exe Add "HKCU\SOFTWARE\Classes\Directory\Background\shell\Run file.bat\command" /VE /D "%ComSpec% /D /C \"Start \"\" /D \"%V\" \"%UserProfile%\Documents\bat\file.bat\"\"" /F
    

    它应该为您创建一个上下文菜单条目,这应该按照您的要求进行。即创建一个看起来像这样的条目:

    C:\WINDOWS\system32\cmd.exe /D /C "Start "" /D "%V" "C:\Users\me\Documents\bat\file.bat""
    

    当您在资源管理器窗口的背景中单击鼠标右键时,您应该会看到一个名为 Run file.bat 的上下文菜单条目,它应该运行您的脚本 file.bat,位于您的 \Documents\bat\ 目录中,并且使用当前工作目录就像您在背景中单击的那样。

    file.bat的内容完全不需要改动

    请注意,由于文件清楚地位于您自己的配置文件中,并且您不应该为系统上的每个用户创建上下文菜单条目,因此我使用 HKEY_CURRENT_USER 作为数据的根键。如果您确实需要为所有用户添加条目,并且仍想从 cmd.exe 创建它,请确保您的 cmd.exe 实例为“以管理员身份运行”,并将 HKCU 更改为 HKLM还请注意,您不应直接在 HKEY_CLASSES_ROOT 中添加条目,因为这实际上只是从其他位置映射的,适当的位置是 HKEY_LOCAL_MACHINE\SOFTWARE\Classes HKEY_CURRENT_USER\SOFTWARE\Classes,如上所述

    【讨论】:

    • mhickey,我注意到您已在登录此站点后返回,但尚未回复此答案,该答案是在您接受答案后创建的。如果您能尝试这种替代方法并提供适当的反馈,我将不胜感激。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2012-07-26
    相关资源
    最近更新 更多