我为实现这一目标而疯狂。我在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的路径:!!!所以,虽然所有路径都以结束而没有反斜杠,但第一条路径以此结束,让我发疯!
答案 0 :(得分: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。
答案 1 :(得分:1)
以下命令适用于我:
c:\cygwin\bin\bash --login -i -c "cd '%~1'; exec /bin/bash.exe"
%~1
扩展%1,删除任何周围的引号(“) - 在命令提示符中查看help for
。
另见:Cygwin中的 chere 包,以及 ConEmu 终端:)