Would it be possible to integrate the ability to copy or move files from one *.rar archive to another *.rar archive natively? When I try this currently using the latest beta version of Opus, I get the error "The operation is not supported by this VFS."
Possible, but also a low priority for us, since it doesn't seem something that's needed often, and would be a lot of work that competes with other features. If more people ask for it then it could happen.
(It is support for Zip, on the other hand.)
Unfortunate, but I appreciate your honesty and quick response.
This script uses a temporary folder to move files and should work just fine with rar archives.
// https://resource.dopus.com/t/cant-move-files-between-rar-archives-natively/39709
// Version 2021-10-30
function OnClick(clickData) {
var cmd = clickData.func.command;
var tab = clickData.func.sourcetab;
var dtab = clickData.func.desttab;
var fsu = DOpus.FSUtil();
cmd.deselect = false;
if (tab.selected.count == 0) return;
if (!dtab) return;
var tmp = fsu.GetTempDirPath();
cmd.RunCommand('Copy MOVE TO="' + tmp + '"');
cmd.RunCommand('Copy MOVE FILE="' + tmp + '\\*" TO="' + dtab.path + '"');
}
Button as XML
<?xml version="1.0"?>
<button backcol="none" display="both" label_pos="right" textcol="none">
<label>Move Via Temp</label>
<tip>Move selected files and folders via a temporary folder</tip>
<icon1>#move</icon1>
<function type="script">
<instruction>@script JScript</instruction>
<instruction>// https://resource.dopus.com/t/cant-move-files-between-rar-archives-natively/39709</instruction>
<instruction />
<instruction>// Version 2021-10-30</instruction>
<instruction />
<instruction>function OnClick(clickData) {</instruction>
<instruction> var cmd = clickData.func.command;</instruction>
<instruction> var tab = clickData.func.sourcetab;</instruction>
<instruction> var dtab = clickData.func.desttab;</instruction>
<instruction> var fsu = DOpus.FSUtil();</instruction>
<instruction> cmd.deselect = false;</instruction>
<instruction />
<instruction> if (tab.selected.count == 0) return;</instruction>
<instruction> if (!dtab) return;</instruction>
<instruction />
<instruction> var tmp = fsu.GetTempDirPath();</instruction>
<instruction />
<instruction> cmd.RunCommand('Copy MOVE TO="' + tmp + '"');</instruction>
<instruction> cmd.RunCommand('Copy MOVE FILE="' + tmp + '\\*" TO="' + dtab.path + '"');</instruction>
<instruction>}</instruction>
</function>
</button>
2 Likes
Thank you very much for your help. I really appreciate it.