web-dev-qa-db-ja.com

WineツールのファイルパスをLinuxからWindows形式に変換します

私が見つけたどのLinux比較ツールよりも優れているWindows比較ツールがあります(そして、かなりの 視覚的比較ツールの広範な分析 を実行しました)。 Linuxで(Wineを介して)そのツールを使用し、Linuxのファイルパスを渡せるようにしたいと思っています。これは、一部には、Double Commanderのような2ペインのファイルマネージャがdiffツールを呼び出すときに完全なファイルパスを渡すためです。

したがって、私は この質問 の逆を求めています。スペースなどのエスケープ文字を含むLinuxスタイルのファイルパスを、Windowsツールで受け入れられるWindowsスタイルのファイルパスに変換するにはどうすればよいですか。ワイン経由で走った?

単純な例として、

入力:

/path/to/file1.ext /path/to/file2.ext

出力

「\ path\to\file1.ext」「\ path\to\file2.ext」

もちろん、現実の世界では、ファイルにスペースなどが含まれている可能性があるため、これまでのbash置換よりも信頼性の高いソリューションを探しています。

#!/bin/bash
p1=$1
p2=$2
wine /utils/wincmp.exe ${p1//\//\\} ${p2//\//\\}
3
Dan Dascalescu

あなたのスクリプトは実際には非常に近いです。必要なのは、変換を行うためのwinepathツールで、WINEの一部として提供されています。

#!/ bin/sh 
 exec wine /utils/wincmp.exe "` winepath --windows\"$ 1 \" `" "` winepath --windows\"$ 2 \" `"

または Laurent Bercot's execline を使用:

#!/ command/execlineb -S2 
 backtick -i left {winepath --windows $ 1} 
 backtick -i right {winepath --windows $ 2} 
 multisubstitute {
 importas left left 
 importas right right 
} 
 wine 
/utils/wincmp.exe $ {left} $ {right}
5
JdeBP