【问题标题】:Define Batch process parameters定义批处理参数
【发布时间】:2020-03-01 01:07:56
【问题描述】:

我在调用批处理文件时定义了一些参数:

:: Usertype:I,C
set Usertype=%~1
set Deltaval=%~2
If Usertype=="C" set Gender=NA
set Gender=%~3
If Gender==NA 
(
goto
END
)

但是,我在 If Usertype=="C" set Gender = NA 行遇到了以下错误: 该命令的语法不正确。

有解决办法吗?

【问题讨论】:

  • 实际上,不,您还有更多问题。你忘记了%,它定义了单词是变量。 if /I "%userType%"=="C" 您还需要解释您正在尝试做什么,因为 %usertype% 当前的值是 :~1%dataval% 的值是 ~2 所以不确定您打算在哪里使用它。我建议你阅读一些帮助文件。打开cmd 并输入set /?if /?,最后,gotoEND 在不同的行上,我没有看到:END 标签定义。
  • 在设置像set Gender = NA 这样的变量时也不能有空格,因为这将创建一个带有空格%Gender % 的变量和一个带有前导空格的值。
  • @GerhardBarnard 谢谢。复制时出现一些错误。我已经更新了代码...
  • 好的。你看过我的 cmets 如何使用变量吗?
  • 是的。但是我想要做的是用户类型是第一个参数Deltaval是第二个参数如果用户类型是“C”然后设置性别== NA。否则,我们必须将 Gender 作为第三个参数。

标签: batch-file windows-server


【解决方案1】:

这就是我想告诉你的,你需要使用% 来定义你作为变量使用的词,而不是将它们视为纯文本。

:: Usertype:I,C
set "Usertype=%~1"
set "Deltaval=%~2"
If /i "%Usertype%"=="C" If /i "%Usertype%"=="I" (
    set "Gender=NA"
    ) else (
    set "Gender=%~3"
   )
If "%Gender%"=="NA" goto :eof

或者你可以这样做

:: Usertype:I,C
set "Usertype=%~1"
set "Deltaval=%~2"
If /i not "%Usertype%"=="C" If /i not "%Usertype%"=="I" do something

【讨论】:

  • TXN。我尝试过使用新的 If-Else 语句::: Usertype:I,C set Usertype=%~1 set Deltaval=%~2 If Usertype=="C" (set Gender=NA) else (set Gender=%~3) If Gender==NA ( goto END )
  • 是的,我明白了。但是如果 /i 和没有 /i 有什么不同
  • 这只是不区分大小写地匹配c,因此将同时匹配cC,但这在这里并不重要。 % 环绕变量名在这里很重要。您是否按原样尝试过?
  • 谢谢。它现在工作正常...但是我如何定义 If %Usertype% NEQ (I,C) then do smt...
猜你喜欢
  • 2021-10-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
相关资源
最近更新 更多