1

我要疯了,试图实现这一目标。我在 Stack Overflow 上阅读了很多问题,但没有奏效。我正在尝试在 console2 上打开一个选项卡,该选项卡在作为参数传递给它的路径上打开 Cygwin。

对于 cmd.exe,非常简单:

cmd.exe %1

对于 Cygwin,这看起来真的很难:

bash --login -i -c 'cd `cygpath \'D:\Program Files\'`;exec bash'

这里的问题是,没有空格的路径效果很好,有空格,它不起作用。另外,我不知道如何将参数传递给它,可能是 $1 或 %1?

编辑1:

我快到,我创建了这个应该直接运行而不是 bash.exe 的批处理文件:

@echo off

set CHERE_INVOKES=%CD%
set TORUN="D:\Program Files\Cygwin\bin\bash.exe" --login -i -c 'cd "%CHERE_INVOKES%"; exec bash'
echo %TORUN%
call %TORUN%
PAUSE

这适用于除 C: (和 D:) 之外的所有路径,原因是什么?Windows 是愚蠢的,它没有一个名为 C: 的路径,而是一个名为 C: 的路径!!!所以,虽然所有路径都没有反斜杠结束,但第一条路径以它结束,让我发疯!

4

2 回答 2

1

这是解决方案:

@echo off

set CHERE_INVOKES=%CD%
::Remove trailing slash if required
IF %CHERE_INVOKES:~-1%==\ SET CHERE_INVOKES=%CHERE_INVOKES:~0,-1%

set TORUN="D:\Program Files\Cygwin\bin\bash.exe" --login -i -c 'cd "%CHERE_INVOKES%"; exec bash'

call %TORUN%

我从这个问题中添加了这段代码:Remove Trailing Slash From Batch File Input

::Remove trailing slash if required
IF %CHERE_INVOKES:~-1%==\ SET CHERE_INVOKES=%CHERE_INVOKES:~0,-1%

这样我就可以使用这个批处理文件在当前路径上打开 Console2 Cygwin。

于 2012-11-18T02:04:11.750 回答
1

以下命令对我有用:

c:\cygwin\bin\bash --login -i -c "cd '%~1'; exec /bin/bash.exe"

Where%~1扩展 %1 删除任何周围的引号 (") — 请参阅help for命令提示符。

另请参阅: Cygwin 中的chere包和ConEmu终端 :)

于 2013-01-08T12:58:48.357 回答