2016-09-29 127 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

相关问题