現在のスクリプトのパスをluaで取得する

841 ワード

原理は、コマンドプロンプトの「cd」コマンドを使用して現在のパスを取得し、tmpファイル(cd.tmp)に書き込み、luaでこのファイルを読み取り、最後に削除することです.
function currDir()
  os.execute("cd > cd.tmp")
  local f = io.open("cd.tmp", r)
  local cwd = f:read("*a")
  f:close()
  os.remove("cd.tmp")
  return cwd
end

この関数の欠点は、自分の文字列に改行文字(見えなくても)が付いているのでstringを使うことです.sub(s,i,j)で区切って、原理は:経路がどんなに長くても、最後の2つの文字は''なので、最後の1つから計算して、-2から1の位置の文字を抽出するだけで、すぐに、すなわち:
 
string.sub(str, 1, -2)

これにより、このパスの下にあるファイルを任意にリンクできます.
function currDir()
  os.execute("cd > cd.tmp")
  local f = io.open("cd.tmp", r)
  local cwd = f:read("*a")
  f:close()
  os.remove("cd.tmp")
  return cwd
end


str = currDir() 
print (string.sub(str, 1, -2) .. '\\aa.txt')