Windows 我如何模仿“a”;包装脚本;在窗户上?

Windows 我如何模仿“a”;包装脚本;在窗户上?,windows,cmd,dos,Windows,Cmd,Dos,在Linux上,当我想在启动程序之前准备程序的环境时,我使用的是一个包装器脚本: export JAVA_HOME=... cd /some/folder exec ./tool "$@" 如何在Windows上完成最后一行,尤其是“$@” 注意:我正在包装接受大量参数的命令(如java或mvn),因此我需要一个适用于>10个参数的解决方案 能够exec固然不错,但这只是一个小问题。可能类似于: @echo off setlocal enableextensions set JAVA_H

在Linux上,当我想在启动程序之前准备程序的环境时,我使用的是一个包装器脚本:

 export JAVA_HOME=...
 cd /some/folder
 exec ./tool "$@"
如何在Windows上完成最后一行,尤其是“$@”

注意:我正在包装接受大量参数的命令(如
java
mvn
),因此我需要一个适用于>10个参数的解决方案


能够
exec
固然不错,但这只是一个小问题。

可能类似于:

@echo off
setlocal enableextensions
set JAVA_HOME=...
cd ...
start "" .\sometool %*
endlocal
Setlocal将环境更改本地化为脚本(有关详细信息,请参阅
Setlocal/?
),而
%*
表示“所有脚本参数”。
start
命令是生成可执行文件的cmd.exe命令

start
命令有奇怪的解析规则;其命令行上的第一个带引号的字符串被认为是控制台窗口标题,如果您没有生成控制台窗口,这是多余的。这意味着这样的命令将无法按预期工作:

start "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"
如果运行此命令,您将生成一个新的cmd.exe实例,并将带引号的字符串作为其控制台窗口标题,这显然不是预期的结果。相反,您必须这样写:

start "" "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"

可能是这样的:

@echo off
setlocal enableextensions
set JAVA_HOME=...
cd ...
start "" .\sometool %*
endlocal
Setlocal将环境更改本地化为脚本(有关详细信息,请参阅
Setlocal/?
),而
%*
表示“所有脚本参数”。
start
命令是生成可执行文件的cmd.exe命令

start
命令有奇怪的解析规则;其命令行上的第一个带引号的字符串被认为是控制台窗口标题,如果您没有生成控制台窗口,这是多余的。这意味着这样的命令将无法按预期工作:

start "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"
如果运行此命令,您将生成一个新的cmd.exe实例,并将带引号的字符串作为其控制台窗口标题,这显然不是预期的结果。相反,您必须这样写:

start "" "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"

%*
获取所有参数。有关更多信息,请参见
call/?
。不确定,如果有帮助的话;批处理不如linux那么智能。有关
exec
的信息,请参阅if
start
帮助。
%*
获取所有参数。有关更多信息,请参见
call/?
。不确定,如果有帮助的话;批处理不如linux那么智能。有关
exec
的信息,请参阅if
start
帮助。