Lua os.execute()コマンドに問題があります。
echo 'aword' > C:\folder\tempworkspace\foo
os.execute()コマンドを試すように、単語をエコーしてファイルに書き込みたいだけです。ディレクトリC:\ folder \ tempworkspaceが存在します。「foo」は、コマンドで作成して「aword」で埋めるファイルの名前です。後でこれが機能するときに、を使用してRを呼び出したいと思いR -q -e "rbinom(1000,1,0.7)" > C:\folder\tempworkspace\foo
ます。
Luaプログラミングで提供されるすべてのアドバイスをすでに試しました -os.execute()がWindowsで機能していません。また、プログラムファイルのアプリケーションがluaでos.executeを使用して実行されないのはなぜですか? しかし、私の問題は別の問題のようです。おそらく構文ではなく、どこか別の問題ですか?
これらのコマンドをコマンドプロンプトに直接入力すると、機能します。管理者としてWindows7Professionalを使用し、EclipseでLua5.1.4を使用しています。
これが私がこれまでに試したことです:
os.execute("echo 'hehe' > C:\folder\tempworkspace\foo")
os.execute [["echo 'hehe' > C:\folder\tempworkspace\foo"]]
os.execute [["echo 'hehe' > 'C:\folder\tempworkspace\foo'"]]
os.execute [[echo 'hehe' > C:\folder\tempworkspace\foo]]
os.execute [[echo 'hehe' > C:\\folder\\tempworkspace\\foo]]
os.execute[[cmd.exe /c echo 'hehe' > C:\folder\tempworkspace\foo]]
os.execute("cmd.exe /c echo 'hehe' > C:\\folder\\tempworkspace\\foo")
os.execute("cmd.exe /c echo 'hehe' > 'C:\\folder\\tempworkspace\\foo'")
コードを改善するための提案をいただければ幸いです。(注:後でluaで出力を使用したいので、ファイルに書き込んでいます。これを行う別の方法として、io.popen()を使用することがどこかで提案されていますが、とにかくプラットフォームに依存すると言われています。使用しようとするとLuaがクラッシュしますx = io.popen("R -q -e 'rnorm(10)'")
)。
編集、最初の回答の後:
あなたのsendMsg関数もどういうわけか私のコンピューターでは機能しません、そして私はエラーを受け取りません、私は本当に何が問題なのか疑問に思います。pcallの場合、私はこれを正しく行っていますか?行print(err)
が何も印刷しないので、私は正しくやっているかどうか疑問に思います。
function sendMsg(cmd, msg, fpath)
local output = cmd.. " ".. msg.. " > ".. fpath
print(output)
os.execute(output)
end
function sendMsgArgs()
sendMsg("echo", "huhu", "C:\\merret\\tempworkspace\\foo");
end
err = pcall(sendMsgArgs)
if err == true then
print("THIS WORKED")
else
print("THIS DID NOT WORK")
print(err)
end
編集:これは実際にはEclipse/エディターの問題でした。そこで、lua-eclipseなどのタグを追加したかったのですが、追加できません。