2009-07-29 5 views
1

非常に長いファイルパスを渡すときに切り捨てられたパラメータがあります。私はプログラムを起動し、コマンドのparamsですべてを渡す必要があります - 時にはコマンドを切り捨てるだけです。これは世界的にもそうです。だから、各パラメータの問題だけではなく、全体としての問題です。C#Process.Start parameters truncated

編集: 問題はおそらくコマンドラインの長さの制限であるmonkey_pと言われています。質問は:どのようにそれをバイパスするには? (ファイルを別の場所に置くことができるため、作業ディレクトリの変更はできません)。

+0

別の問題がある可能性があります:spパラメーター間の区切りにスペースが使用されるため、パラメーター内のエースが使用されます。パラメータを引用符で囲みます。 –

+0

1.すべてのパラメータは引用符で囲まれています 2.引用符で囲まれた1つの長いパラメータも切り捨てられます – argh

答えて

1

  • 必要 プログラムを変更します。長いコマンド 行を使用して、 にパラメータ情報 が含まれているファイルを使用し、ファイル名 をコマンドラインに含めます。たとえば、代わりにバッチファイルで ExecutableFile.exeパラメータ1パラメータ2 ... ParameterNコマンドライン を使用しての

、 のようなコマンドラインを使用 にプログラムを修正します

: PARAMETERFILEは 必要なパラメータを(パラメーター パラメーター2 ... ParameterN)を含むファイルで、次のコマンドライン、
  • 環境という 変数は、(お使いのオペレーティングシステムに適切な など)のいずれか 2047または8191文字未満が含まれているので、 変数を大規模な環境を使用して修正 プログラム

ExecutableFile.exe c:\temp\ParameterFile.txt

。例えば

に、PATH環境 変数は、(お使いのオペレーティングシステムに適切な として)のいずれか 2047または8191文字以上が含まれている場合、 は減らすために、以下の 方法の1つ以上を使用します の文字数:

  • のフォルダとファイルに短い名前を使用します。
  • フォルダーツリーの深さを減らしてください。
  • フォルダにファイルを格納すると、PATH環境に が必要なフォルダが少なくなります( )。
  • ファイルの検索にPATHの依存関係を減らすために使用できる メソッドを調べてください。
  • 私のため Microsoft Supportからなので、何も役に立つ

- この上限を上げることができず、他の方法でそれを実行する方法がないようです...

私はよしようとすると:各ファイルへのパスを覚えて、いくつかのDIRに移動し、CurrentDirectoryをDIRに設定してプログラムを実行し、ファイル名を渡して、プログラムが終了した後にファイルをその場所に戻す - 醜い、醜い、醜い、私は知っているが、それは他の方法がないようだ...

2

私はあなたの質問が何であるか分かりませんが、コマンドラインには制限があります。この同じ制限は、Microsoft Windows XP を実行しているコンピュータでProcess.Start(コマンド、引数)

のために有効になります以降、コマンドプロンプト で使用することができます 文字列の最大長は8191文字です。 Microsoft Windows 2000またはWindows NT 4.0を実行しているコンピュータでは、コマンドプロンプトで を使用できる文字列の最大長は で、2047 文字です。

(状況に応じ など)次のいずれかの方法または 以上を使用し、制限を回避 動作するように制限を回避する方法
+0

私はこれが問題であると推測します。 – argh