通过注册表获取右键点击文件的名称与路径并传递给Python脚本
解决右键菜单传递文件参数到Python脚本的问题
问题根源
在PowerShell里,%属于自动变量(比如%等价于ForEach-Object),直接写%1、%V会被PowerShell自动解析,没法原样写入注册表,导致右键点击时无法正确传递文件的路径和名称参数。
修复后的PowerShell代码
有两种可行的修复方式:
方式1:转义%符号
用反引号`把%转义,让PowerShell把它当作普通字符写入注册表:
Set-ItemProperty -Path $commandKey -Name '(default)' -Value "cmd /C `"C:\Program Files\IronPython 2.7\ipy.exe`" `"$scriptPython`" ``%1 ``%V"
方式2:用单引号包裹值内容(更简洁)
PowerShell里单引号包裹的内容不会解析内部变量和特殊符号,适合不需要展开$scriptPython的场景:
Set-ItemProperty -Path $commandKey -Name '(default)' -Value 'cmd /C "C:\Program Files\IronPython 2.7\ipy.exe" "你的脚本路径" "%1" "%V"'
如果$scriptPython是需要PowerShell展开的变量,就用混合引号写法:
Set-ItemProperty -Path $commandKey -Name '(default)' -Value "cmd /C `"C:\Program Files\IronPython 2.7\ipy.exe`" `"$scriptPython`" '%1' '%V'"
验证说明
修复完成后,查看注册表对应项的默认值,会显示为cmd /C "C:\Program Files\IronPython 2.7\ipy.exe" "你的脚本路径" "%1" "%V",右键点击文件时,系统会自动把%1替换为文件路径(旧格式)、%V替换为文件完整路径(支持UAC提升的新格式),正确传递给你的Python脚本。
内容的提问来源于stack exchange,提问作者JPcoder
相关产品推荐
相关产品推荐

