如何在MATLAB中使用Cygwin执行其他目录下的命令?

4

我正在使用MATLAB,想在Windows下使用CYGWIN执行一些C++程序。这些程序在Cygwin的本地目录中:C:\cygwin\home\Alex\Community_BGLL_CPP。我可以让CYGWIN在MATLAB的本地目录下执行命令:

>> ls
.                README           genlouvainmex.m  
..               genlouvain.m     private          
>> system('C:\cygwin\bin\ls')
README
genlouvain.m
genlouvainmex.m
private
ans =
 0

但我无法像在CYGWIN的本地目录中那样执行命令。这是为了启动一个C++程序以生成一个文本文件,然后我可以使用MATLAB来处理它。因此,我只需要调用它。在这里,我尝试使用ls进行实验:

>> system('C:\cygwin\bin\ C:\cygwin\home\Alex\ls')
'C:\cygwin\bin\' is not recognized as an internal or external command, 
operable program or batch file. 
ans =
 1

我也尝试了>> system('C:\cygwin\bin\ls C:\cygwin\home\Alex\'),但它也无法工作。
其中一种方法是进入CYGWIN目录,然后执行以下命令:cd
>> pwd
ans =
c:\cygwin\home\Alex\Community_BGLL_CPP\sample_networks
>> system('C:\cygwin\bin\ls')
arxiv.bin
arxiv.txt
example.bin
example.txt
graph.tree
graph_list.bin
graph_list.txt
karate.bin
karate.tree
karate.txt
ans =
 0

实际上,C:\cygwin\bin\ 不是可执行文件。你可以尝试使用类似 system('C:\cygwin\bin\bash -c C:\cygwin\home\Alex\ls') 的方式从 Cygwin-shell 中调用你的 C++ 程序(这里是 ls)。 - Tobias
嗯,我不确定也无法立即测试。也许你需要转义反斜杠(像 \\)。或者尝试像这样用引号:system('C:\cygwin\bin\bash -c "C:\cygwin\home\Alex\ls"')。我的猜测是需要转义。 - Tobias
@Tobold,我想执行一个名为convert的程序,但我认为像ls这样的操作是第一步。奇怪的是,ls可以工作,但它总是从同一个目录产生结果 `>> system('C:\cygwin\bin\bash -l -c ls C:\cygwin\home\Alex\Community_BGLL_CPP') Community_BGLL_CPP Community_latest
system('C:\cygwin\bin\bash -l -c ls C:\cygwin\home\') Community_BGLL_CPP Community_latest` 无论提供什么输入,都会产生相同的目录列表。
- Vass
所以文件夹中没有名为ls的可执行文件。我认为您在命令周围缺少引号(在c标志之后),因此只执行ls并忽略以下路径。这只是一个猜测。但实际上并不重要,因为您想要执行convert。 - Tobias
看起来反斜杠不能作为路径分隔符,你可以尝试使用斜杠。你也可以测试一下在Cygwin shell手动执行是否可行。 - Tobias
显示剩余8条评论
1个回答

0

我没有安装cygwin,所以无法确定这个问题。 但是我认为你只需要在系统命令中加入一个'cd'。 例如:

>> system('"C:\Program Files (x86)\Git\bin\bash" -c "cd  C:/Python27; C:/Program\ Files\ \(x86\)/Git/bin/ls"')

生成我的Python文件夹的列表,因为ls在该文件夹中运行。

所以你想要这样的东西:

>> system('"C:\cygwin\bin\bash" -c "cd  C:/cygwin/home/Alex/Community_BGLL_CPP/sample_networks; C:/some_path/convert"')

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