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 脚本重命名当前项目的主要内容,如果未能解决你的问题,请参考以下文章