- 可以为lua.exe创建快捷方式。
- 快捷方式的文件属性中在目标(...lua.exe)后附加参数。
- 路径、参数:
- 需要脚本文档文件的路径。
- 可以使用绝对路径或相对路径。
- 相对路径基于、相对于属性中的起始位置。
- 起始位置即工作目录。
- 工作目录默认会被作为查找包(package)的路径(pacage.path)之一。
- 脚本中(require)引用的其他文件(包)。建议保持相对位置关系。
- 可以启用选项(参数)i:enters interactive mode after running script; ,保持窗口可见,接收(print)输出。
- 参见Lua文档7 – Lua Standalone。
或:
- 在以上快捷方式中不填写路径(填写选项、工作目录)。
- 将文档拖放至快捷方式图标(相对于命令行中将文件路径附加到参数后并执行)。
或:
- 复制或链接(而非快捷方式)解释器(lua.exe)到脚本所在文件夹。
- 进而无需指定工作目录(但也无法指定参数,需要以其为源建立快捷方式)。
或:
- 关联文件类型为解释器(lua.exe)打开,但需要在脚本内指定工作目录(使用lfs库)。
或:(当前方案)
- 建立脚本,更改为自定义类型(如.luae),关联解释器。
- 脚本作为启动入口,重命名为目标(Lua)文件一样,并放置在一起(目录)。
- 启动脚本的内容一致,可以复制,或使用硬链接(不可使用符号连接,其路径仍为原文件)
- 执行此(启动)脚本,自动设置包路径,(dofile)执行目标脚本。
- 如:
--print(arg[-1],arg[0],arg[1]) local workingDirectory,fileName=string.match(arg[0],'^(.-)([^\/]+)%..-$') package.path=package.path..';'..workingDirectory..'?.lua' --..[[other path]] package.cpath=package.cpath..';'..workingDirectory dofile(workingDirectory..fileName..'.lua')
或者使用 os.execute 以传递其他选项。
assert(os.execute( --print(( arg[-1] ..' -i ' ..' -e "package.path=package.path..[[;'..workingDirectory..'?.lua]]" ' ..' -e "package.cpath=package.cpath..[[;'..workingDirectory..']]" ' ..workingDirectory..fileName..'.lua' ))
其他:
- If there is no script in the call, the interpreter name goes to index 0。
- 可以通过参数-e "print(arg[0])"查看。
- string.match(arg[0],'([^\/]+)%..-$') 提取文件名(不含后缀)。
- by calling os.exit to terminate。
- 未能获知快捷方式的名字。
- 可以建立指向快捷方式的链接,但系统无法运行,报错(该版本的 ..lua53.exe - 快捷方式 - 符号连接.exe 与你运行的 Windows 版本不兼容。请查看计算机的系统信息,然后联系软件发布者。)。
- 设置工作目录是用于 package.path/cpath ,可以手动设置。
- 指定 package.path 需包含文件后缀(如.lua)(指定 package.cpath 无需指定.dll)。