首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Batchh文件参数处理

Batchh文件参数处理
EN

Stack Overflow用户
提问于 2015-03-31 11:01:47
回答 2查看 58关注 0票数 0

假设我有一个名为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中访问这些参数,我知道%*获取所有参数。但是,我想要的是除了最后一个变量之外的所有参数。非常新的批处理文件。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-31 11:29:43

SomethingDark建议的第一种方法(在调用批处理文件之前组合参数)可能是最好的方法,但是如果您无法使用它,下面的方法可能会有所帮助(如果参数包含对Windows具有特殊意义的字符,则需要进行试验):

代码语言:javascript
代码运行次数:0
运行
复制
@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%:

这意味着:

代码语言:javascript
代码运行次数:0
运行
复制
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:
票数 0
EN

Stack Overflow用户

发布于 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");

如果由于某些原因不能工作,您可以在批处理脚本中始终将这四个参数批处理,并对它们做您想做的任何事情。

代码语言:javascript
代码运行次数:0
运行
复制
@echo off
set first_three="%1 %2 %3"
set last_one=%4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29367108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档