3

Java ProcessBuilder を使用して、文字列を引数としてバッチ ファイルに渡しています。

ProcessBuilder pb = new ProcessBuilder( "batch.bat", "jason Mary molly");

バッチファイルは...

 @ECHO OFF
 SET V1=%1
 ECHO %V1%
 pause

バッチ ファイルの出力は次のとおりです (二重引用符に注意してください)。

「ジェイソン・メアリー・モリー」

文字列を 1 つだけ渡すと、引用符が見つかりません。私の問題は、これらの 3 つの引数が引用符で囲まれていないことを要求するかなり複雑なプログラムを書いていることです。そうしないと、プログラムによって 3 つの個別の引数ではなく 1 つのファイル名として表示されます。これらの二重引用符を削除する方法はありますか?

4

2 に答える 2

2

試してください:%~1引用符を取り除く必要があります

詳細についてfor /? | more +121は、cmd で入力してください。引用元はこちら:

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file
%~$PATH:I   - searches the directories listed in the PATH
               environment variable and expands %I to the
               fully qualified name of the first one found.
               If the environment variable name is not
               defined or the file is not found by the
               search, then this modifier expands to the
               empty string

修飾子を組み合わせて、複合結果を得ることができます。

%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
               environment variable for %I and expands to the
               drive letter and path of the first one found.
%~ftzaI     - expands %I to a DIR like output line
于 2013-09-26T03:16:46.523 に答える
1

Stringに渡すそれぞれProcessBuilderが、実行中のコマンドの引数になるため、

ProcessBuilder pb = new ProcessBuilder( "batch.bat", "jason mary molly");

3 つではなく、 1 つの引数をコマンドに渡すことを意味します。

使ってみて...

ProcessBuilder pb = new ProcessBuilder( "batch.bat", "jason", "mary", "molly");

その代わり

于 2013-09-26T03:21:02.420 に答える