我使用的是從System.Process
runCommand
但我用如何在特定目錄下運行命令?
"cd " ++ path ++ " & " ++ args
而且這也不好,如果路徑是Windows不同的本地驅動器上,甚至會無法正常工作。
如何處理runCommand
的當前目錄更改?
我使用的是從System.Process
runCommand
但我用如何在特定目錄下運行命令?
"cd " ++ path ++ " & " ++ args
而且這也不好,如果路徑是Windows不同的本地驅動器上,甚至會無法正常工作。
如何處理runCommand
的當前目錄更改?
setCurrentDirectory從System.Directory
改變了主程序的工作目錄。
如果在使用runCommand
之前執行此操作,該命令也應該使用該目錄。
通過查看runCommand
的源代碼,你可以意識到僅僅是一個薄的包裝createProcess
這是一個真正的工作。下面是從createProcess
documentation取得的一個例子,爲了方便解決這個問題,編輯了這個例子。
(_, Just hout, _, _) <- createProcess (proc "/path/to/my/executable" []) { cwd = Just "/path/to/working-directory" , std_out = CreatePipe }
奇怪,我得到'createProcess:不存在(沒有這樣的文件或目錄)' – Cynede
可執行文件的當前目錄由'cwd'指定。我認爲如果你的可執行文件不在你的env變量'PATH'中,你仍然需要將可執行文件的完整路徑傳遞給'proc'。 –
我編輯了這個例子來澄清我的觀點。 –
您是否從'System.Directory'嘗試過[setCurrentDirectory](http://hackage.haskell.org/package/directory-1.2.0.1/docs/System-Directory.html#v:setCurrentDirectory)?也許如果你在使用'runCommand'之前設置了主程序的工作目錄,那麼該命令就會在該目錄下運行。 –
@enoughreptocomment謝謝,這就是我需要的。 – Cynede
我已將我的評論更改爲答案,因爲它聽起來很有效。 –