ikas-mc / ContextMenuForWindows11

Add Custom Context Menu For Windows11
GNU Lesser General Public License v3.0
1.85k stars 90 forks source link

引号加的位置有问题:处理多个文件时,如果其中一个文件包含空格,会无法运行 #102

Closed MMMMMoris closed 9 months ago

MMMMMoris commented 9 months ago

直接上配置文件

image

{
  "title": "Calculate MD5",
  "exe": "PWSH",
  "param": "-noexit -Command Get-FileHash -LiteralPath \\\"{path}\\\" -Algorithm MD5 | format-list",
  "icon": "\"C:\\Users\\moris\\Pictures\\Elements\\icon\\DIY\\sign\\hash\\NUM\\icon\\32x32\\MD5_32x32.ico\"",
  "index": 3,
  "acceptDirectory": false,
  "acceptExts": "*",
  "acceptFileFlag": 1,
  "acceptFileRegex": "",
  "acceptMultipleFilesFlag": 2,
  "pathDelimiter": ",",
  "paramForMultipleFiles": "-noexit -Command Get-FileHash -LiteralPath {path} -Algorithm MD5 | format-list"
}

多个不含空格的文件可以计算校验和,单个含空格或者单个不含空格的文件也可以计算,但是当文件数量为两个及以上,而且其中有任一文件名包含空格的时候,如下图

image

会报错如下

image

看起来像是在处理多个文件时,如果其中一个文件包含空格,这个含有空格的文件实际上没有被加上引号,或者说引号加的位置不对,并没有加在每一个文件名字符串两端,导致了这个错误。

以下是 MenuDebug 的结果

image

这个看起来一切正常。这个结果如果直接放到 PowerShell 里面也能正常运行,但是使用右键菜单的就是没法运行

我也不知道是不是我的配置写漏或者写错了什么导致的,我研究了一晚上,只能得出这个结论了。大佬如果发现这是个 bug 的话,麻烦修复下,辛苦了。

MMMMMoris commented 9 months ago

开源部分没有包含 customeContextMenuDebug.exe 的源码吗?会不会是主程序和 customeContextMenuDebug.exe 的解析方式不一样?后者可能做了些许改进?

ikas-mc commented 9 months ago

customeContextMenuDebug.exe 只是一个别名,其实就是自身,只不过是直接输出dll传入的参数

多文件路径ps有些特殊,如下修改:

path delimiter
\",\"
param
与单文件一致,或者复制过来
ikas-mc commented 9 months ago
{
    "title": "Calculate MD5",
    "exe": "PWSH",
    "param": "-noexit -Command Get-FileHash -LiteralPath \\\"{path}\\\" -Algorithm MD5 | format-list",
    "icon": "\"C:\\Users\\moris\\Pictures\\Elements\\icon\\DIY\\sign\\hash\\NUM\\icon\\32x32\\MD5_32x32.ico\"",
    "index": 3,
    "acceptDirectory": false,
    "acceptExts": "*",
    "acceptFileFlag": 1,
    "acceptFileRegex": "",
    "acceptMultipleFilesFlag": 2,
    "pathDelimiter": "\\\",\\\"",
    "paramForMultipleFiles": "-noexit -Command Get-FileHash -LiteralPath \\\"{path}\\\" -Algorithm MD5 | format-list"
}
MMMMMoris commented 9 months ago
{
    "title": "Calculate MD5",
    "exe": "PWSH",
    "param": "-noexit -Command Get-FileHash -LiteralPath \\\"{path}\\\" -Algorithm MD5 | format-list",
    "icon": "\"C:\\Users\\moris\\Pictures\\Elements\\icon\\DIY\\sign\\hash\\NUM\\icon\\32x32\\MD5_32x32.ico\"",
    "index": 3,
    "acceptDirectory": false,
    "acceptExts": "*",
    "acceptFileFlag": 1,
    "acceptFileRegex": "",
    "acceptMultipleFilesFlag": 2,
    "pathDelimiter": "\\\",\\\"",
    "paramForMultipleFiles": "-noexit -Command Get-FileHash -LiteralPath \\\"{path}\\\" -Algorithm MD5 | format-list"
}

Ok,收到,非常感谢。应该早点提交 ISSUE 的,弄了一整晚。

ikas-mc commented 9 months ago

ps这个多重转义反直觉,其它的软件就很容易

MMMMMoris commented 9 months ago

ps这个多重转义反直觉,其它的软件就很容易

作者有空可以把这条加到脚本例子里面

ikas-mc commented 9 months ago

👌👌