VLC 使用 lua 脚本重命名当前项目

Posted

技术标签:

【中文标题】VLC 使用 lua 脚本重命名当前项目【英文标题】:VLC rename current item with lua script 【发布时间】:2021-07-02 21:23:05 【问题描述】:

我正在使用这个脚本作为模板来重命名 VLC 中的文件:https://github.com/surrim/vlc-delete/ 脚本按预期工作。

我的代码如下所示:

function descriptor()
    return 
        title = "VLC Rename";
        version = "0.1";
        author = "I";
        shortdesc = "Rename current file";
        description = [[
<h1>vlc-rename</h1>"
When you're playing a file, use VLC Rename
to rename the current file]];
    
end

function removeItem()
    local id = vlc.playlist.current()
    vlc.playlist.delete(id)
    vlc.playlist.gotoitem(id + 1)
    vlc.deactivate()
end

function activate()
    local item = vlc.input.item()
    local uri = item:uri()
    oldFile = vlc.strings.decode_uri(string.gsub(uri, "^file:///", ""))

    d = vlc.dialog( "Rename Dialog" )
    d:add_label("Filename")
    w = d:add_text_input(oldFile, 1, 5,200 ,30)
    d:add_button("OK", click_ok)
    d:show()

end

function click_ok()
    local newFile = w:get_text()
    vlc.msg.info("[vlc-rename] renaming: " .. oldFile .. " with " .. newFile)
    if newFile ~=  oldFile then
        removeItem()
        retval, err = os.rename(oldFile,newFile)
        vlc.msg.info("[vlc-rename] end rename")

        if (retval == nil) then
            vlc.msg.err("[vlc-rename]  fail: " .. err)
        end
    end
    d:delete()
    vlc.deactivate()
end

function deactivate()
    vlc.deactivate()
end

function close()
    deactivate()
end

function meta_changed()
end

此代码从 os.rename() 函数输出错误: lua 错误:[vlc-rename] 失败:[我的文件名] 权限被拒绝 无论海拔高度。

我使用的是 Windows 10 64 位和 VLC 3.03。 由于这是我的第一个 lua 脚本,我欢迎任何意见。

【问题讨论】:

也许试试 os.execute("ren" .. .. " " )?在执行之前打印命令,如果它不起作用,请尝试在终端中运行该命令以确保它按预期工作。 os.execute() 冻结 VLC 播放器。我在 vlc 之外测试了 os.rename 命令,它工作正常。所以错误一定是VLC播放器从Windows获得的权限。 【参考方案1】:

我可能错了,但您尝试重命名的文件可能已在其他地方或 VLC 打开(您说要重命名“当前文件”)。

【讨论】:

感谢您的回复。遗憾的是,该文件没有被修改,并且可以在编辑器中毫无问题地重命名。

以上是关于VLC 使用 lua 脚本重命名当前项目的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 bash 脚本重命名当前目录及其子目录中的文件?

使用批处理脚本重命名上个月的文件

bat脚本照片复制重命名?

使用 Powershell 递归重命名文件

创建现有数据库的副本并使用 Powershell 脚本对其进行重命名

Powershell脚本过滤文件并使用奇偶数(从1到2)重命名文件]]