convert.exe
に名前が付けられた2つの実行可能ファイルがありますPATH
。それらの1つはImageMagickからのもので、もう1つはWindowsからのものです。
user=> (clojure.java.shell/sh "where" "convert")
{:exit 0, :out "E:\\Program Files\\ImageMagick-6.8.3-Q16\\convert.exe\r\nC:\\Windows\\System32\\convert.exe\r\n", :err ""}
convert.exe
内でImageMagickを実行したいと思いますclojure.java.shell/sh
。通常、これはPowerShell内で実行できます。
PS E:\Users\bt> convert --version
Version: ImageMagick 6.8.3-8 2013-03-04 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2013 ImageMagick Studio LLC
Features: DPC OpenMP
Delegates: bzlib fontconfig freetype jng jp2 jpeg lcms lzma pango png ps tiff x xml zlib
ただし、これは内では機能しませんclojure.java.shell/sh
。
user=> (clojure.java.shell/sh "convert" "--version" :dir "E:/Users/bt")
{:exit 4, :out "", :err "Invalid drive specification.\r\n"}
最初は、ImageMagickへのパスを自分の前に移動して、PATH
Windowsのバイナリよりも優先されるようにする必要があると思っていましたが、効果はありませんでした。また、PATH
キックのためだけに最後に移動しました。それもうまくいきませんでした。
これを解決するために私が知っている唯一の代替手段は、実行可能ファイルのいずれかの名前を変更することです。しかし、コードを機能させるためだけに他の人にImageMagick / Windowsバイナリの名前を変更させたくないので、これは望ましくありません。
この情報が役立つ場合は、新しいコマンドシェル(PowerShellではなくcmd.exe
)を開くことがで始まりC:\Windows\System32
ます。これが実行可能ファイルの選択に影響を与える可能性があると感じていますが、よくわかりません。cmd.exe
これは、Launchyから実行した場合にのみ発生します。スタートメニューを使用すると、ホームディレクトリから起動します。
これを行う方法はありますか?明らかな何かが欠けているような気がします。