





















通过快捷方式启动一个批处理文件(Pass_Arg_WorkDirectory_To_Lua.bat)
批处理自动调用同目录下的 Lua 脚本(Read_Arg_WorkDirectory.lua,见后)
将快捷方式设置的“起始位置”(即工作目录)传递给 Lua 脚本
将快捷方式“目标”中附加的所有参数原样传递给 Lua 脚本
Pass_Arg_WorkDirectory_To_Lua.bat)@echo off
set "SCRIPT_NAME=Read_Arg_WorkDirectory.lua"
REM 获取批处理所在目录(固定位置)
set "SCRIPT_DIR=%~dp0"
REM 拼接完整脚本路径
set "SCRIPT_PATH=%SCRIPT_DIR%%SCRIPT_NAME%"
REM 调用 lua.exe,传递:
REM 1. Lua 脚本的完整路径
REM 2. 可选,冗余,当前工作目录(%cd%,即快捷方式的“起始位置”)
REM 3. 快捷方式附加的所有参数(%*)
lua.exe "%SCRIPT_PATH%" "%cd%" %*
REM 调试时可取消下面注释
REM echo lua.exe "%SCRIPT_PATH%" "%cd%" %*
REM pause
Read_Arg_WorkDirectory.lua 实现:
获取工作目录:通过 io.popen("cd") 或 lfs.currentdir() 显示当前目录(即批处理中 %cd% 传递的值)
获取命令行参数:直接打印 arg 表,其中:
arg[0] = 脚本自身完整路径
arg[1] = 批处理传入的工作目录(%cd%)
arg[2]、arg[3] … = 快捷方式附加的参数
脚本同时包含了对 Lua 解释器路径的探测(通过 package.cpath、arg[-1]、where lua 等),但这部分不影响参数接收的核心逻辑。
创建 Pass_Arg_WorkDirectory_To_Lua.bat 的快捷方式 Pass_Arg_WorkDirectory_To_Lua - 快捷方式.bat
右键快捷方式 → 属性
起始位置:填写希望传递的工作目录,例如 C:\data\input
若留空,则工作目录自动为快捷方式所在的文件夹
目标:在原有路径后追加参数,例如:
D:\scripts\Pass_Arg_WorkDirectory_To_Lua.bat "hello" 123 --verbose
双击快捷方式运行
当 Lua 脚本执行时,会输出类似:
Working Directory:
from CMD: C:\data\input
from LFS: C:\data\input
Command Line Arguments (`arg` table):
arg[0]: D:\scripts\Read_Arg_WorkDirectory.lua
arg[1]: C:\data\input
arg[2]: hello
arg[3]: 123
arg[4]: --verbose
.lua 文件(有限支持).luae),并将其文件类型关联到 lua.exe。可改变工作目录:通过“起始位置”设置 ✅
可传递参数:❌ 无法传递(双击时相当于 lua.exe script.lua,无额外参数)
结论:仅当不需要参数时可使用。
经过测试(Windows + Lua 5.3):
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。