Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua编程-os.execute()在Windows中不工作_Windows_Eclipse_Lua_Command Prompt - Fatal编程技术网

Lua编程-os.execute()在Windows中不工作

Lua编程-os.execute()在Windows中不工作,windows,eclipse,lua,command-prompt,Windows,Eclipse,Lua,Command Prompt,我在纯Lua中创建了一个函数来扫描目录中的文件,并将它们放在另一个文件中 我尝试的命令是: os.execute( "dir /B C:\\Users\\Fernando\\workspace\\Organizator2\\s1 > C:\\Users\\Fernando\\workspace\\Organizator2\\temp.txt" ) 但是。。。不行!我用其他更简单的命令做了很多测试,比如“开始记事本”或“mkdir C:\test”,但它们都不起作用!更糟糕的是,我在提

我在纯Lua中创建了一个函数来扫描目录中的文件,并将它们放在另一个文件中

我尝试的命令是:

os.execute( "dir /B C:\\Users\\Fernando\\workspace\\Organizator2\\s1 > 
C:\\Users\\Fernando\\workspace\\Organizator2\\temp.txt" ) 
但是。。。不行!我用其他更简单的命令做了很多测试,比如“开始记事本”或“mkdir C:\test”,但它们都不起作用!更糟糕的是,我在提示符中直接尝试了相同的命令,但都是正确的

我尝试使用tooo the io.popen(),但系统对我传递的任何命令(甚至是空字符串!)都返回“非法操作”

以下是所有代码:

function ScanDirectory(source, str) 
    local str = str or "temp.txt" 
    os.execute("dir /B "..source.." > "..str) 
    directory = io.open(str,"r") 
    return directory 
end 

--  main script 

do 
    local source = "C:\\Users\\Fernando\\workspace\\Organizator2\\s1" 
    local directory  = ScanDirectory(source, "C:\\Users\\Fernando\ 
\workspace\\Organizator2\\temp.txt") 
end 
我正在使用Windows7、Luaforwindows、5.1和LuaEclipse


有人见过这样的问题吗?

请尝试使用以下语法:

os.execute[[”目录/B C:\Users\Fernando\workspace\Organizator2\s1>
C:\Users\Fernando\workspace\Organizator2\temp.txt“]]

请注意,在这种情况下,反斜杠(
\
)不是特殊字符。
(Lua在内部使用cstring,有时会导致一些奇怪和惊人的结果:P)

您列出的大多数命令似乎都是仅在命令提示符下工作的shell命令。尝试直接运行cmd.exe以查看是否收到提示,如果是,可以尝试通过/c选项将命令传递给cmd.exe。您也可以尝试不启动记事本,看看它是否运行

os.execute('cmd.exe /c dir /B C:\\> C:\\test.txt')

这很有效。在win中使用Linux风格的命令根本不是一个好主意=)

我刚刚在我的计算机上测试了你的代码,它工作正常(当然是在我的目录中)。可能您没有得到预期的结果,因为您的
目录
字符串被换行符打断,导致:

dir /B C:\Users\Fernando\workspace\Organizator2\s1 > C:\Users\Fernando\
workspace\Organizator2\temp.txt
正确答案应该是:

dir /B C:\Users\Fernando\workspace\Organizator2\s1 > C:\Users\Fernando\workspace\Organizator2\temp.txt
请尝试将do端更改为:

local source = "C:\\Users\\Fernando\\workspace\\Organizator2\\s1" 
local directory  = ScanDirectory(source, "C:\\Users\\Fernando\\workspace\\Organizator2\\temp.txt") 

你需要双引号吗?如果没有双引号,这正是OP所拥有的,尽管它更容易吸引眼球。另外,请参见感谢您的回复,但问题尚未解决。。。同样的问题还在继续,我已经尝试使用[[]]符号,但我不知道我也必须使用“”。。很高兴知道:]谢谢你的回复,但也没用。。。通过cmd,无论是否使用/c,所有命令都可以正常工作,但是通过函数,没有。如果我在linux,我会认为这是一个权限问题,但我在windows中担任管理员,所以我不知道可能是什么!从您的评论来看,我不确定您是否理解/c部分。据我所知,windows中没有dir.exe,因此如果找不到命令,“dir.exe c:\”将失败。但是“cmd.exe/c dir c:\”将起作用,因为dir是windows中的shell命令。我没有一个Lua环境可以测试,但是如果它和我做过的任何其他windows编程一样,你需要运行可执行文件,而不是shell命令。你也可以在Lua中测试,从Lua中运行“cmd.exe”作为可执行文件,看看它是否运行,或者只运行“notepad.exe”而不是“start notepad.exe”。实际上,它只是在这里被破坏了,不在我的节目里。但是它神奇地工作!那是什么巫术??????谢谢。诀窍:要么使用前斜杠,也可以在Windows中正常工作,要么使用长字符串符号:[[C:\Users\Fernado\etc.]。两者都比这两个双反斜杠更好(并且更容易键入/使用)。