我有一个很好的控制台文件管理器(Senh Liu的eXtreme),它将短路径/文件名作为变量传递给menu.bat.
如何生成完整的文件夹名称+长文件名?
例:
我尝试过以下方法:
SET my_file=%~2
:
echo %my_file%
生产: "P:\MYPROG~1\SHELLS\ZBACKUP\REFSTO~1.BAL"
FOR /F "tokens=* USEBACKQ" %%F IN (`dir /B %2`) DO SET my_file=%%~fF
:
echo %my_file%
生产: "P:\MYPROG~1\SHELLS\zBackup\RefsToMyData.bal"
FOR /F "tokens=* USEBACKQ" %%F IN (`dir /B %2`) DO SET my_file=%%~dpnxF
:
echo %my_file%
生产: "P:\MYPROG~1\SHELLS\zBackup\RefsToMyData.bal"
像许多"(windows)用户"一样,我不想花时间学习从源代码编译任何东西.所以Lua似乎是一个业余爱好者的非常好的选择.
对不起,如果这是一个非常简单的问题 - 但......
Q1.如何列出任何给定解释器实例可用的模块?
一些二进制发行版有许多编译为DLL的模块,有些已将它们添加到主EXE中.很高兴知道哪些模块内置在EXE中,并检查cpath是否正在查找任何其他DLL模块.
Q2.有没有办法在Lua的命令行获得帮助?
由于我是Lua的新手,我想要一个简单的方法来获得任何给定功能的帮助.在一些解释语言中有一个帮助("fname")函数,Matlab就是一个很好的例子.
Q3.可以将GSL-Shell的此功能修改为帮助系统的基础吗?(即使它只是确认了某个给定函数的存在,它会有所帮助)
local ffi = require 'ffi' local help_files = {'graphics', 'matrix', 'iter', 'integ', 'ode', 'nlfit', 'vegas', 'rng', 'fft'} local cdata_table = {'matrix', 'complex matrix', 'complex'} local function help_init( ... ) local REG = debug.getregistry() REG['GSL.help_hook'] = {} end local function open_module(modname) local fullname = string.format('help/%s', modname) local m = require(fullname) return m end local function search_help(func) for k, modname in ipairs(help_files) do local mt = getmetatable(func) local module = open_module(modname) if module[func] …
我遇到了 Windows 使用反斜杠作为路径分隔符的永恒问题。我想要一个将 Windows 路径转换为 Unix 路径的 Lua 函数。
我知道我可以通过转义反斜杠来为变量分配路径,例如
文件名 = "P:\\user\\scripts\\config.lua"
我知道这可以使用不同的字符串分隔符来完成,例如
文件名 = [[P:\user\scripts\config.lua]]
我知道我不能使用 string.gsub,因为在传递给 gsub 之前,单个反斜杠要么被删除,要么被解释为转义序列。
因此,使用 Windows 当我将文件名分配给变量时遇到问题,因为字符串包含单个反斜杠,例如
filename = arg[0]
filename = debug.getinfo(2, "S").source:sub(2)
Run Code Online (Sandbox Code Playgroud)
如何将此字符串转换为带有正斜杠的 unix 样式字符串?
function unixpath(filename)
if filename~=nil then
else
return nil
end
end
print(unixpath(arg[0]))
print(unixpath(debug.getinfo(2, "S").source:sub(2)))
print(unixpath([[P:\user\scripts\config.lua]]))
Run Code Online (Sandbox Code Playgroud)