2011-07-31 2 views
1

をする自分自身をcmdをすることができます。これらのコマンドをコマンドラインで自分で実行すると、正常に実行されます。 to_png.batファイルを実行すると、次のエラーが表示されます。Cygwinのターミナルバッチファイル - ファイルを見つけることができませんが、私は実行する場合、それは私がto_png.batを作成し、ちょうどPNGに私のSVGファイルを変換するために使用Inkscapeのコマンドラインでそれを満たしたcygwinの下に

**(inkscape.exe:3856)警告:指定されたドキュメント 'svgs/ace.svg'を開くことができません有効なSVGファイル)

は、私はもちろん、同じディレクトリから実行していると私はまた、.batファイルを実行しているときに何とか作業ディレクトリInkscapeのソーが異なっていた場合には、絶対パスを指定してみました。私はちょうどこれをpythonとos.system呼び出しを使って行い、同じ問題を抱えていました。

EDIT: は、DOSコマンドラインから実行すると、同じ問題でも同様に失敗します。 PATH上のinkscapeを検索しますが、inkscapeは.svgファイルを見つけることができません。これは単一引用符の問題ですか?私はそれらにスペースを入れたファイル名をつけているので、引用しています。

to_png.bat:

inkscape -h 120 -e 'pngs/ace.png' 'svgs/ace.svg' 
inkscape -h 120 -e 'pngs/king.png' 'svgs/king.svg' 
inkscape -w 120 -e 'pngs/queen.png' 'svgs/queen.svg' 
+1

ファイル名の前後に引用符が必要ですか? – Gabe

+0

引用符を使用せずにスペースを含むファイル名をどのように扱うのですか?私は引用を必要とする "ace green.svg"のようなものがあります。 – Mark

+2

@マーク:はい、バッチスクリプトの引用符は '' 'ではなく、' ''でなければなりません。 –

答えて

0

'文字がファイル名を区切るための文字として認識されていません。その代わり、"使用されている。また、あなたはおそらく、バックスラッシュを使用しての代わりに、前方のほうが良いでしょうパスの区切り文字としてスラッシュ

このように、あなたのスクリプトは、おそらく次のようになります。。

inkscape -h 120 -e "pngs\ace.png" "svgs\ace.svg" 
inkscape -h 120 -e "pngs\king.png" "svgs\king.svg" 
inkscape -w 120 -e "pngs\queen.png" "svgs\queen.svg" 
+0

Windows CMD.EXEは、UNIXと同じ方法でコマンドラインを前処理しません。したがって、UNIXを元にしたinkscapeは、Cygwinを全く使用しないCMD.EXEプロンプトから実行したとしても、それらのパス名には通常のスラッシュ(/)を必要とする可能性があります。 –

+0

それは私がこれまで知っていた1つの領域です(Windowsに移植されたコマンドでも、UNIXでコマンドライン引数を処理するコマンドで作業しています)ので、私はそれについて論じることはできません。それを私に指摘してくれてありがとう。 –

0

私はそれが前方にパスを渡すことだと思うが、Windowsのコマンドにスラッシュ常に動作しません。

1

DOS/Windowsのディレクトリ区切り文字はバックスラッシュです。したがって、スラッシュを使用するとcygwinシェルでは動作しますが、.batでは動作しません。ダブルティックを持つ単一のダニの交換 '

+0

引用符で囲んだままでインクスケープに渡すと仮定し、正しく – Mark

0

は「問題を解決し、ファイル名にスペースを可能にした。Windowsバッチスクリプトで

2

あなたがしようとしていることは根本的に奇妙です。

あなたはbashのを持っているので、あなたは、単にシェルスクリプトを作成し、シェルプロンプトで入力し、正確に同じコマンドを実行することができます。

代わりに、あなたは、独自のPATHと環境を使用してCMD.EXEによって運営され.BATファイルを作成しようとしています。どうして?

これを本当に行う必要がある場合は、Windowsコマンドプロンプトを開くにはcmdを実行してから、コマンドと(PATH)変数をテストして正しく動作するようにしてください。あなたは間違いなく、PATH変数かコマンドライン、あるいはその両方を変更しています。しかし、Windowsのコマンドプロンプトから実行できる場合は、それらのコマンドラインを.batファイルにコピーして実行することができます。

関連する問題

 関連する問題