【问题标题】:read batch parameters with single and double - [duplicate]用单和双读取批处理参数 - [重复]
【发布时间】:2020-09-10 23:38:30
【问题描述】:

我的批处理文件是 ProcessMe.bat

命令是这样的

ProcessMe   -color  blue    -type  high    --size  large    --tag  gift

参数顺序不固定

ProcessMe     -type  high  --tag  gift  --size  large  -color  blue    

ProcessMe     --tag  gift   -color  blue   --size  large   -type  high

ProcessMe     --size  large    -type  high  -color  blue   --tag  gift   

和参数以相同的格式单-和双--

我想在我的 .bat 文件中读取这些参数

我尝试了这些但没有成功

echo %--size%

echo %-size%

echo %size%

echo --size

echo -size

echo size

echo %--size

echo %-size

echo %size

如何在 .bat 文件中获取参数值?!

【问题讨论】:

  • @michael_heath 这只是使用 parms 订单,在我的情况下订单是可交换的。
  • 也许是Find value of command line argument in batch file 的答案。任何命令都可以。
  • 我认为您将批处理参数误认为是 powershell 参数。在批处理文件中,参数通过单个% 识别的数字变量传递,例如%1 其中%1 是第一个参数,%2 第二个等等,其中%0 是批处理文件的路径.
  • powershell中没有params函数。那是一个powershell命令

标签: batch-file


【解决方案1】:

每个开关只有一个值,这很容易。 使用 shift 并将值分配给开关名称,直到所有 Params 都在循环的帮助下处理完毕

@Echo off
Setlocal EnableExtensions EnableDelayedExpansion
Call :PROCESS %*
For %%A in (Type tag size color) DO Set %%A
Pause
Exit /B
:PROCESS
    IF "%~1" == "" Exit /B 0
    Set "PARAM=%~1"
    Set "PARAM=!PARAM:-=!"
    SHIFT
    Set "!Param!=%~1"
    SHIFT
Goto :PROCESS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2021-12-15
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多