通过Windows资源管理器上下文菜单调用自定义存档程序

时间:2018-11-17 13:56:05

标签: windows explorer

我在Windows上安装了Linux SMB。 Linux SMB服务器配置为支持  区分大小写的文件名。 Linux SMB共享包含带有一些文件的源文件,例如: $ ls dir test.txt Test.txt TesT.txt Windows文件资源管理器可以正确处理这些文件。当我通过Ctr-c复制或移动它们时,它们将按预期进行处理。

我现在想通过右键单击并在 上下文菜单 中选择存档操作,从Windows File Explorer中对某些目录进行归档。 。源树很大,我不想通过cmdline导航。

所以我发现:

  • WinRar仅在选择“添加到存档...”然后选择zip格式时才支持存档中区分大小写的文件名。对于Rar格式,它将抱怨使用相同的小写字母名称。
  • 7zip完全不支持任何格式的区分大小写的文件名。它总是很讨厌。

因为我已经习惯tar.gz,所以我想创建tar.gz beeing。所以我有这些问题:

  • 是否有一个存档程序在Windows File Explorer中注册了一个上下文菜单操作,该操作可以创建 tar.gz | tar.bz2 并支持区分大小写的文件名?
  • 是否可以注册自己的Windows文件资源管理器插件,也许是用JScript编写的,这使我可以调用例如 cygwin tar -czvf dirname.tar.gz dirname通过上下文菜单获取文件/目录名作为参数?如果编写/注册这样的插件不是太困难,那将是首选的解决方案。

1 个答案:

答案 0 :(得分:0)

我使用注册表添加了上下文菜单:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\ArchiveTarGz]
@="[> Archive tar.gz "

[HKEY_CLASSES_ROOT\Directory\shell\ArchiveTarGz\command]
@="\"C:\\cygwin64\\bin\\mintty.exe\" \"-i\" \"/Cygwin-Terminal.ico\" \"/bin/bash\" \"--login\" \"-i\" \"-c\" \"sh /cygdrive/c/ctxmenue.sh '%1' gz\""

[HKEY_CLASSES_ROOT\Directory\shell\ArchiveTarBz2]
@="[> Archive tar.bz2 "

[HKEY_CLASSES_ROOT\Directory\shell\ArchiveTarBz2\command]
@="\"C:\\cygwin64\\bin\\mintty.exe\" \"-i\" \"/Cygwin-Terminal.ico\" \"/bin/bash\" \"--login\" \"-i\" \"-c\" \"sh /cygdrive/c/ctxmenue.sh '%1' bz2\""

将以上内容保存在r.reg中并执行。还要创建/cygdrive/c/ctxmenue.sh

#!/bin/sh

f=$(cygpath -u "${1//\\/\\\\}")
d=$(dirname "$f")
b=$(basename "$f")

case ${2} in
    gz)  ( cd "$d"; tar -cvzf "${b}.tar.${2}" "${b}" );;
    bz2) ( cd "$d"; tar -cvjf "${b}.tar.${2}" "${b}" );;
    *)   ( cd "$d"; tar -cvf "${b}.tar" "${b}" );;
esac