【问题标题】:Start batch file from terminal and pass a specific argument从终端启动批处理文件并传递特定参数
【发布时间】:2018-07-27 15:11:31
【问题描述】:

我有一个带有以下代码的批处理文件,它正在启动一个 jarfile。

@ECHO OFF
IF NOT EXIST jarFile.jar GOTO ERROR
IF EXIST jarFile.jar Start java -jar jarFile.jar

ECHO Successfully started!
PAUSE
EXIT

:ERROR
ECHO Jar file doesn't found!
PAUSE
EXIT

我想问你,当我从 CMD 提示符启动 bat 文件时,使用一个参数“-force”,它可以在启动后跳过暂停。 示例:启动 someBatFile.bat -force(新参数),当使用“-force”参数时,我想跳过暂停。是否有可能做到这一点,如果可以,你能帮助我吗?

【问题讨论】:

  • pause 替换为Echo=%*|Findstr /i "-force" 2>&1>Nul ||pause 这将检查-force 是否出现在参数中的任何位置——如果没有出现则pause
  • IF NOT [%1]==[-force] PAUSE --- 在这里查看语法:ss64.com/nt/if.html
  • 这个问题与javajar 无关,它是关于基于批处理脚本参数的Windows 批处理文件中的条件逻辑。删除标签!!!

标签: batch-file command-line-arguments


【解决方案1】:

将带有 PAUSE 的行更改为以下内容:

IF NOT !%1!==!-force! PAUSE

【讨论】:

  • 是的,这就是我需要的答案。非常感谢好友 :) 我知道 %1 表示第一个参数,但你能解释一下为什么会被这个“!”捕获吗?和 force 命令或显示我可以阅读的来源
  • 为什么使用感叹号而不是引号?没有名为 -force 的变量。
  • 它应该是if /I not "%~1"=="-force" pause(删除/I,以防区分大小写)...
  • @SomethingDark 只是我习惯的。你说得对,报价更好。而 aschipfl 做得更好,并确保参数中的引号不会受到伤害。
猜你喜欢
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2015-08-30
相关资源
最近更新 更多