如何在Julia中调用Windows CMD命令?执行dir命令出现ENOENT错误的问题排查
解决Windows下Julia调用CMD内置命令报错的问题
这个问题的核心原因很清晰:dir是Windows CMD shell的内置命令,并非独立的可执行文件。Julia的run()函数默认会把反引号中的内容当作可执行程序路径去查找,自然找不到dir这个文件,因此抛出ENOENT错误。
要让Julia正确识别并执行CMD内置命令,你需要通过调用cmd.exe来间接执行这些命令,具体方案如下:
方法1:执行单条CMD内置命令
使用cmd /c参数指定要执行的命令,其中/c的作用是执行完命令后自动关闭CMD进程:
mycommand = `cmd /c dir` run(mycommand)
这样Julia会启动cmd.exe进程,并让它执行dir命令,就能正常输出当前目录的内容了。
方法2:执行多条CMD命令
如果需要一次性执行多个CMD命令,可以用&分隔不同命令:
mycommand = `cmd /c dir & echo 目录列表已输出完毕` run(mycommand)
拓展:执行PowerShell内置命令
如果要使用PowerShell的内置命令(比如Get-ChildItem),可以用类似方式调用powershell.exe:
mycommand = `powershell -Command Get-ChildItem` run(mycommand)
补充说明:在Linux或macOS系统中,ls这类命令是独立的可执行文件,所以直接用run(ls)就能生效,但Windows的内置命令必须依赖CMD或PowerShell外壳来执行。
内容的提问来源于stack exchange,提问作者Petahanks
相关产品推荐
相关产品推荐

