如何在Cygwin shell中在Windows中执行批处理文件

3

我正在尝试在Windows机器上通过jsp执行一个批处理文件,没有任何问题可以正常运行。

然而DOS没有类似于unix命令的sed。因此,我不得不安装cygwin,以便在我的批处理文件中使用以下sed命令。

sed -i "s/<model.version>2.1.1-SNAPSHOT<\/model.version>/<model.version>2.1.1-b-1<\/model.version>/g" pom.xml  

我的问题是如何调用Cygwin shell,使得我的 .bat 文件在 Cygwin shell 中运行而不是 Windows 命令提示符中运行。

以下是一段有效的代码。唯一的问题是它调用了命令提示符。我想要调用 Cygwin shell 而不是命令提示符。

File dir = new File("C:\\Projects\\release-builds");  
Runtime.getRuntime().exec("cmd.exe /c start build-model.bat", null, dir);  

请给予建议。

4
这真的是你想做的最好方式吗?看起来有很多额外的工作量。你不能用Java实现你想要的吗? - Falmarri
1
沿着这条路走下去,会有痛苦和疯狂。但我想大多数是痛苦。 - Joey
2个回答

2

您需要将cygwin目录添加到您的PATH中(或者服务的PATH),然后您可以从DOS提示符或批处理脚本中运行cygwin命令。

或者,您可以提供c:\cygwin\usr\bin\sed.exe或任何其他文件的完整路径。


您可以自动最小化窗口,我猜您根本不想看到窗口?您无法从Cygwin运行批处理脚本,只能运行sh/bash shell脚本。要运行bash脚本,请运行bash.exe -c而不是cmd.exe。 - Peter Lawrey
我在Windows上的Cygwin shell中运行了批处理文件,一切都很完美。我通过使用命令bash --login -i进入bash shell,并通过./build-model.bat执行我的批处理文件,一切都很顺利。 - user477402

2

您是否考虑从gnuwin项目中获取sed工具呢?这样您就可以在本机的Windows Shell上使用它了。


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