假设我有一个名为check.bat的批处理文件。我使用命令在java上运行它。
Runtime.getRuntime().exec("cmd /c start C:\check.bat");
它运行批处理文件时没有任何问题。但是当我把参数传递给批处理文件时,
Runtime.getRuntime().exec("cmd /c start C:\check.bat arg1 arg2 arg3 arg4");
我想在check.bat中访问这些参数,我知道%*获取所有参数。但是,我想要的是除了最后一个变量之外的所有参数。非常新的批处理文件。请帮帮忙。
发布于 2015-03-31 11:29:43
SomethingDark建议的第一种方法(在调用批处理文件之前组合参数)可能是最好的方法,但是如果您无法使用它,下面的方法可能会有所帮助(如果参数包含对Windows具有特殊意义的字符,则需要进行试验):
@echo off
setlocal
set ALLBUT1=
if "%~2" == "" goto :gotthem
set ALLBUT1=%1
:loop
shift
if "%~2" == "" goto :gotthem
set "ALLBUT1=%ALLBUT1% %1"
goto :loop
:gotthem
set "LAST=%1"
echo All-but-one:%ALLBUT1%:
echo Last:%LAST%:
这意味着:
S:\>arg one two three
All-but-one:one two:
Last:three:
S:\>arg one two three four
All-but-one:one two three:
Last:four:
发布于 2015-03-31 11:11:38
通常,您可以将前三个参数作为一个巨大的参数,将它们放在诸如check.bat "arg1 arg2 arg3" arg4
这样的引号中。
因为这是用Java编写的,所以您应该可以将一些引号转义到exec命令中,比如Runtime.getRuntime().exec("cmd /c start C:\check.bat \"arg1 arg2 arg3\" arg4");
。
如果由于某些原因不能工作,您可以在批处理脚本中始终将这四个参数批处理,并对它们做您想做的任何事情。
@echo off
set first_three="%1 %2 %3"
set last_one=%4
https://stackoverflow.com/questions/29367108
复制相似问题