Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

passing strings to batch file through ProcessBuilder

I am using Java ProcessBuilder to pass a String to a batch file as an argument.

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

The batch file...

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

The batch file output is this (pay attention to the double quotes):

"jason mary molly"

If I pass in only 1 string there are no quotes to be found! My problem is, I have a rather complex program I am writing that requires these 3 arguments to not have quotes around them, or they will be viewed by the program as one file name rather than 3 seperate arguments. Is there a way to remove these double quotes?

like image 682
Jason Avatar asked May 25 '26 00:05

Jason


1 Answers

Try: %~1 It should get rid of the quotes

For more information type: for /? | more +121 in cmd. Here is the quote reference:

%~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

The modifiers can be combined to get compound results:

%~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
like image 116
Monacraft Avatar answered May 27 '26 14:05

Monacraft



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!