在 Julia 中运行 Windows Shell 命令

6

据说在Julia中,我可以通过先按下;来运行shell命令。但是在我的Windows 7机器上没有成功。以下是一个示例,在其中我首先在shell中运行dir,然后尝试在Julia中执行相同的操作:

C:\Users\Public>dir
 Volume in drive C is OS
 Volume Serial Number is A4A2-4168

 Directory of C:\Users\Public

01/30/2016  03:31 AM    <DIR>          .
01/30/2016  03:31 AM    <DIR>          ..
07/13/2009  09:08 PM    <DIR>          Documents
07/13/2009  08:54 PM    <DIR>          Downloads
01/02/2017  10:56 AM    <DIR>          Music
01/16/2016  02:53 PM           262,144 NTUSER.DAT
07/13/2009  08:54 PM    <DIR>          Pictures
11/20/2010  11:16 PM    <DIR>          Recorded TV
01/05/2016  06:06 AM    <DIR>          Roaming
07/13/2009  08:54 PM    <DIR>          Videos
               1 File(s)        262,144 bytes
               9 Dir(s)  850,167,861,248 bytes free

C:\Users\Public>julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.5.0 (2016-09-19 18:14 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-w64-mingw32

shell> dir
ERROR: could not spawn `dir`: no such file or directory (ENOENT)
 in _jl_spawn(::String, ::Array{String,1}, ::Ptr{Void}, ::Base.Process, ::RawFD, ::RawFD, ::RawFD) at .\process.jl:3
21
 in #414 at .\process.jl:478 [inlined]
 in setup_stdio(::Base.##414#415{Cmd,Ptr{Void},Base.Process}, ::Tuple{RawFD,RawFD,RawFD}) at .\process.jl:466
 in #spawn#413(::Nullable{Base.ProcessChain}, ::Function, ::Cmd, ::Tuple{RawFD,RawFD,RawFD}, ::Bool, ::Bool) at .\pr
ocess.jl:477
 in run(::Cmd) at .\process.jl:591
 in repl_cmd(::Cmd, ::Base.Terminals.TTYTerminal) at .\client.jl:91

julia>

我尝试了其他命令,cd 命令可以正常工作,但是 cls 命令不能。这里出了什么问题?
2个回答

5

这个有效:

shell>cmd /c dir

4
问题在于Windows中许多“命令”是内置的,而不是程序。如果有人想要在Windows上实现对所有cmd内置命令的特殊处理,我们欢迎提交PR。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接