2016-09-29 137 views
0

當我運行一個批處理文件,運行bash -c(Windows上的Windows子系統的Linux/Bash在Windows上的ubuntu上)作爲一個EXE(pidgin)的子進程,甚至如果EXE升高/管理員在Windows批處理文件錯誤:從bat文件生成的bat文件不是一個命令

'bash' is not recognized as an internal or external command, 
operable program or batch file. 

,我運行.bat文件是:

bash -c "curl --silent -u '''my api key'':' -d type='note' -d body='My Message' -d title='My Subject' 'https://api.pushbullet.com/v2/pushes'" 
pause #disable after debugging 

我打算做的是把它作爲一個「夥伴撲向pidgin「,這樣當我收到Nickserv的消息時,它會通知我無處不在。

我也嘗試從pidgin直接執行命令,而不是作爲bash文件運行,但curl從不發生,並且我沒有通過pushbullet獲得通知。但是如果我在CMD或Run中運行完全相同的命令,它將使用bash併成功執行curl。 ​​

我也發現了這個問題:Calling Windows subsystem for Linux apps through PowerShell/cmd,但我不知道這是否回答,這不能做,因爲你清楚可以在一個bat文件放在一個bash命令。

回答

0

將路徑更改爲C:\ Windows \ sysnative \ bash.exe。 Pidgin是32位的,因此它將C:\ Windows \ System32別名爲C:\ Windows \ SysWOW64和C:\ Windows \ sysnative到C:\ Windows \ System32。對於MS來說,將SysWOW64中的bash.exe符號鏈接到真正的符號可能是有意義的。

1

你有沒有嘗試完全指定批處理文件中的bash shell的路徑?

如果用c:\ Windows \ System32 \ bash.exe替換curl.bat文件中的bash命令,情況可能會更好一些。看起來像pidgin沒有你的完整路徑環境變量可用於它產生的進程。

+0

哇,這是一個很好的建議,但可惜它不起作用。我已經放棄了這個想法,但嘗試一下很有趣,並且測試WSL – Alice

+0

的限制,如果有人真的試圖像這樣捲曲,我建議只需安裝一個捲曲窗口並從那裏運行 – Alice