你这个办法好,不过我让AI用的DO自带的脚本:
第一步:进入文件类型设置
在 DOpus 顶部的菜单栏中,点击 设置 (Settings)。
选择 文件类型 (File Types…),会弹出一个新的管理窗口。
第二步:定位“压缩文件”分组
为了让菜单只在点击压缩包时出现,我们不应该把它加到“所有文件”里,而是加到特定的文件组里:
在弹出的窗口中,找到并展开第一类:文件类型组 (File Type Groups)。
在列表里向下找,双击 压缩文件 (Archives)(英文版叫 Archives)。
这会打开一个专门针对压缩包类型的编辑窗口。
第三步:添加右键菜单项
在打开的窗口顶部,切换到 快捷菜单 (Context Menu) 选项卡。
点击右侧的 新建 (New…) 按钮。
在弹出的菜单属性窗口中:
标签 (Label):输入你想在右键菜单里看到的名字,比如 WinRAR 智能解压。
类型 (Type):保持默认的 运行 Opus 功能 (Run an Opus function)。
第四步:填入脚本代码
@script jscript
function OnClick(clickData) {
var tab = clickData.func.sourcetab;
var cmd = clickData.func.command;
var fsu = DOpus.FSUtil;
// ⚠️请确认你的 WinRAR 路径无误
var winrarPath = "\"C:\\Program Files\\WinRAR\\WinRAR.exe\"";
// 如果没有选中任何文件,直接退出,避免报错
if (tab.selected_files.count === 0) {
return;
}
cmd.deselect = false;
cmd.ClearFiles();
for (var e = new Enumerator(tab.selected_files); !e.atEnd(); e.moveNext()) {
var item = e.item();
var ext = String(item.ext).toLowerCase();
if (!ext.match(/\.(rar|zip|7z|tar|gz|bz2)$/)) {
continue;
}
var folderEnum = fsu.ReadDir(item.realpath, false);
var itemCount = 0;
var multipleRootItems = false;
if (folderEnum.error === 0) {
while (!folderEnum.complete) {
folderEnum.Next();
itemCount++;
if (itemCount > 1) {
multipleRootItems = true;
break;
}
}
} else {
multipleRootItems = true;
}
var extractCmd = "";
if (multipleRootItems || itemCount === 0) {
extractCmd = winrarPath + " x -ad -y \"" + item.realpath + "\" \"" + tab.path + "\\\"";
} else {
extractCmd = winrarPath + " x -y \"" + item.realpath + "\" \"" + tab.path + "\\\"";
}
cmd.RunCommand(extractCmd);
}
}