【问题标题】:How do I emulate a "wrapper script" on Windows?如何在 Windows 上模拟“包装脚本”?
【发布时间】:2014-08-04 15:40:12
【问题描述】:

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

 export JAVA_HOME=...
 cd /some/folder
 exec ./tool "$@"

我将如何在 Windows 上执行最后一行,尤其是 "$@"

注意:我正在包装带有很多参数的命令(例如 javamvn),所以我需要一个适用于超过 10 个参数的解决方案。

能够exec 会很好,但这只是一个小问题。

【问题讨论】:

  • %* 获取所有参数。有关更多信息,请参阅call /?。不确定,是否有帮助;批处理不如 linux 聪明。对于exec,请参阅start 是否有帮助。

标签: windows cmd dos


【解决方案1】:

大概是这样的:

@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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2017-01-06
    • 1970-01-01
    • 2013-03-23
    • 2021-08-10
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多