我在Windows上安装了Linux SMB。 Linux SMB服务器配置为支持
区分大小写的文件名。 Linux SMB共享包含带有一些文件的源文件,例如:
$ ls dir
test.txt Test.txt TesT.txt
Windows文件资源管理器可以正确处理这些文件。当我通过Ctr-c复制或移动它们时,它们将按预期进行处理。
我现在想通过右键单击并在 上下文菜单 中选择存档操作,从Windows File Explorer中对某些目录进行归档。 。源树很大,我不想通过cmdline导航。
所以我发现:
zip
格式时才支持存档中区分大小写的文件名。对于Rar
格式,它将抱怨使用相同的小写字母名称。因为我已经习惯tar.gz
,所以我想创建tar.gz beeing。所以我有这些问题:
tar -czvf dirname.tar.gz dirname
通过上下文菜单获取文件/目录名作为参数?如果编写/注册这样的插件不是太困难,那将是首选的解决方案。 答案 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