2017-01-14 7 views
3

Angeblich in Julia kann ich Shell-Befehle ausführen, indem Sie zuerst ; schlagen. Aber ich habe kein Glück auf meinem Windows 7-Rechner. Hier ist ein Beispiel, wo ich zum ersten Mal dir in der Shell ausgeführt, und dann versuchen, das gleiche in Julia zu tun:Ausführen von Windows-Shell-Befehlen in 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> 

Ich habe andere Befehle versucht, und cd funktioniert, aber cls nicht. Was ist hier falsch gelaufen?

Antwort

2

Dies funktioniert:

shell>cmd /c dir 
4

Das Problem ist, dass viele "Befehle" in Windows sind builtins statt Programme. Wenn jemand eine spezielle Behandlung aller cmd Builtins unter Windows implementieren möchte, wäre ein PR willkommen.