如何从字符串中设置值

Posted

技术标签:

【中文标题】如何从字符串中设置值【英文标题】:How to set a value from a string 【发布时间】:2021-01-21 10:30:00 【问题描述】:

我有一个命令/程序,它在标准输出中以字符串形式返回文本,即“YES”或“NO”,如何为该字符串设置一个变量以在其他地方使用它?

我希望它表现得像

Echo Yes << this is from the command, I can't change it
Yes << How it is shown in the CMD window
IF "Yes" is defined goto yes
IF "No" is defined goto no
:yes
echo yes & exit
:no
echo no & exit

【问题讨论】:

您可以使用for /f 循环将命令结果保存为变量,然后使用if 命令检查该变量;或者您可以将命令的结果通过管道传送到find 并检查不区分大小写的字符串YesNo。请打开命令提示符窗口,键入for /?,按[ENTER] 键,然后阅读信息。然后,您可以使用 if /?find /? 重复此操作。然后选择你喜欢的,编写一些代码,测试它,如果它不能按预期工作,你应该有足够的信息来编辑你的问题以成为主题。 我知道了,谢谢 Ben PersonickCompo 【参考方案1】:

要捕获命令/程序的输出,您需要使用For /F 循环来解析并处理您要捕获的输出。

如果您只需要做出选择,使用FINDFINDStr 做出决定通常是更简单的解决方案。

因此,如果您想简单地做出选择,并且唯一的输出是“是”或“否”,而这是输出可能采用的唯一两个选项,您可以轻松地检查一个,如果第一个条件不是,则假设另一个'没有找到:

ECHO Yes | FIND /I "Yes" && (
  GOTO :yes
) || (
  GOTO :NO
)

如果您只想选择并且调用与输出具有相同字符的标签,并且只会产生这样的输出,您可以使用非常好的 for 循环创建一个 select 语句:

FOR /F "Tokens=*" %%_ IN ('
  ECHO.Yes
') DO (
  GOTO :%%_
)

如果您的输出可能不是一个有效的选择,有一些方法可以通过搜索脚本来验证输出并在未找到标签时选择默认选项来完成上述工作:

FOR /F "Tokens=*" %%_ IN ('
  ECHO.Yes
') DO (
  TYPE "%~f0" | FIND /I ":%%_" && (
    GOTO :%%_
  ) || (
    GOTO :Default
  )
)

:Default
  Echo. Invalid Result
GOTO :EOF

如果您想捕获信息并做出选择,以便您也可以在程序的另一部分使用该信息,那么您再次需要 FOR /F 循环:

FOR /F "Tokens=*" %%_ IN ('
  ECHO.Yes
') DO (
  SET "_Response=%%_"
  GOTO :%%_
)

:Yes
 ECHO.The result was "%_Response%"!
GOTO :EOF

【讨论】:

以上是关于如何从字符串中设置值的主要内容,如果未能解决你的问题,请参考以下文章

从操作更新、删除、插入到存储过程 SQL 中设置值

加载商店后如何在网格中设置值? EXTJS3

Kendo DropdownList 从模型中设置值

以编程方式在 material-ui Autocomplete TextField 中设置值

Kendo DateTimePicker 从 json 结果中设置值

如何使用 Javascript 在 CKEditor 中设置值?