1

私はこれを達成しようとして気が狂います。Stack Overflow に関する多くの質問を読みましたが、うまくいきませんでした。パラメータとして渡されたパスでCygwinを開くconsole2のタブを開こうとしています。

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

次のコマンドが機能します。

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 に答える
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 if required
IF %CHERE_INVOKES:~-1%==\ SET CHERE_INVOKES=%CHERE_INVOKES:~0,-1%

このようにして、このバッチ ファイルを使用して、現在のパスで Console2 Cygwin を開くことができます。

于 2012-11-18T02:04:11.750 に答える