Lua中的os.getenv在批处理文件中不起作用。

我有一个小脚本读取我的PATH并将其存储在文件中,我希望能够安排每天运行。

path = os.getenv("PATH")
file_name = "C:\\temp.txt"
file = io.open(file_name, "w")
file:write(path)
file:close()

如果我从命令行运行它,它就能工作。但当我创建批处理文件(我使用Windows XP)并双击它时,os.getenv("PATH")就无法返回true了。批处理文件:

"C:\Program Files\Lua\5.1\lua" store_path.lua

我在这个问题的评论中读到:“它不是进程环境变量,它由shell提供,所以它不起作用”。而确实,一些其他的环境变量(比如用户名)正常工作。


我有两个问题:

  1. 为什么shell无法访问PATH?我认为它会复制环境(因此只设置env变量会是一个问题)。
  2. 以一种可以将其添加到调度程序的方式读取PATH,哪个方法最好?
点赞
用户282536
用户282536

让批处理文件从 shell 中运行它,以便您获得 shell 变量:

cmd /c C:\path\to\lua myfile.lua
2013-04-30 14:59:12