2011-04-17 59 views
1

javaからRuntime.getRuntime.exec()を使用してcmd.exeに送信するコマンドをプログラムで生成しています。ファイル経由でtortoiseproc.exeにパラメータを渡す方法は?

コマンドは、あなたが見ることができるように、パスのパラメータは、ファイルの数をとり、この文字列は、約一定の長さを超えたときに問題が発生し、フォーム

tortoiseproc /command:ignore /path:file1*file2*file3*...................filen 

のコマンドを無視tortoiseprocです。 cmd.exeのマイクロソフトKBに記載されている8197文字。

この問題を回避するには、コマンドライン文字列ではなくファイルからパラメータを受け入れるようにプログラムを修正します。誰もがファイル経由でtortoiseproc.exeにパラメータを渡す方法を知っていますか?

答えて

0

いいえ、それはできません。ただし、この特定の場合では問題ありません。ファイルリストを複数の小さなものに分割し、tortoiseprocを複数回実行できます。例:

tortoiseproc /command:ignore /path:file1*file2*file3*file4 
tortoiseproc /command:ignore /path:file5*file6*file7*file8 

というように、のnをファイルにアップ。

+0

私が思っていました私はsvnコマンドラインツールを使用してファイルからの無視パターンを受け入れるignoreプロパティを設定することを選択しました。 svn propsetは-F tmpfileを無視します。ここで、tmpfileは、改行文字で区切られたパターンを無視したファイルを表します。ご回答有難うございます。 –

1

utf16形式でファイルを渡すことができます。各ファイルは別々の行にリストされています。

は、私は同じ問題を抱えていた /pathfile:"path/to/file.txt"

+0

UTF16でエンコードされたファイルを作成するにはどうすればよいですか?私はPrintWriter pw = new PrintWriter(新しいOutputStreamWriter(新しいFileOutputStream(tempFile)、Charset.forName( "UTF-16")))を使ってみました。 tortoiseprocがエラーを返しました。さらなるアイデア? –

0

と、そのファイルへのパスを渡し、これはそのための私のソリューションです:

using (var s = File.Create("D:\\p3.tmp")) 
{ 
    using (var sw = new StreamWriter(s, new UnicodeEncoding(false, false))) 
    { 
     sw.Write(@"D:\SourceCode\Utils\ProductProvider.cs" + '\n'); 
     sw.Write(@"D:\SourceCode\Utils\BillingProvider.cs"+ '\n'); 
    } 
} 

ファイルが作成された後、私は使用

TortoiseProc.exe /command:commit /pathfile:"D:\p3.tmp" /logmsg:"test log message" /deletepathfile 
関連する問題