【问题标题】:Multiple commands cmd in a single line of for /f [duplicate]单行中的多个命令 cmd for /f [重复]
【发布时间】:2018-01-24 02:24:38
【问题描述】:

我在 cmd 中的每一行都运行了这个命令并且工作正常。如何在cmd中一行运行这个命令?

我尝试使用&,但如果我逐行运行命令行并使用&,我会得到不同的结果。

for /f %i in ('getmac^|find "-"') do set str=%i
set string=%str:-=%
REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318} /s | findstr "\<%string%\>"

下面我附上一个打印屏幕

Command run line by line

Command run with &amp;

【问题讨论】:

  • 您可以简单地创建一个批处理文件并运行一次。
  • 我有 Kace K1000,我想在一行命令中插入这个命令。
  • @rubystallion 不仅如此,但您怀疑是对的。这一定是以前问过的。但我懒得用谷歌搜索正确的。 :p
  • 只是为了记录,我不认为这是它所链接的帖子的副本。

标签: cmd


【解决方案1】:

在这里试试这个:

for /f %i in ('getmac^|find "-"') do (set str=%i& set string=!str:-=!& REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318} /s | findstr \^<!string!\^>)

注意复合语句周围的括号,以及转义 &lt; &gt; 重定向的插入符号。如果您需要在 cmd 中启用延迟变量替换,请使用以下命令:

cmd /v:on /c "for /f %i in ('getmac^|find "-"') do (set str=%i& set string=!str:-=!& REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318} /s | findstr \^<!string!\^>)"

【讨论】:

  • 感谢您的回答,但这不起作用。 for /f %i in ('getmac^|find "-"') do (set str=%i && set string=%str:-=% && REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972- E325-11CE-BFC1-08002bE10318} /s | findstr "\")
  • 刚刚更新了我的答案
  • 我已经尝试运行 for /f %i in ('getmac^|find "-"') do (set str=%i && set string=!str:-=! && REG QUERY HKLM \SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318} /s | findstr "\") 和 cmd /v:on /c "for /f %i in ( 'getmac^|find "-"') do (set str=%i && set string=!str:-=! && REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318 } /s | findstr "\")" 在 cmd 但不起作用。
  • 感谢您的帮助,但您的回答仍然没有解决我的问题
  • 没问题。如果你在你的 cmd 中运行最后一个(使用 cmd /v:on...)你会得到什么?您使用的是什么操作系统?
【解决方案2】:

您可以使用&amp; 字符来分隔行,如this question 所示。

【讨论】:

  • 如果我使用 & 是不行的
  • 在 Kace K1000 中不起作用?它适用于我的cmd。您收到什么错误消息?
  • 如果我在 cmd 中逐行运行命令工作正常,但如果我使用 & 这不会像逐行运行命令行那样给出结果。
  • 那么它给出了什么结果,有什么不同?
  • 如果我在 cmd 中逐行运行,我会得到结果 NetworkAddress REG_SZ 00AA22BB33CC。如果我使用 & 我得到结果集 str=00-AA-22-BB-33-CC & set string=%str:-=% & REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE -BFC1-08002bE10318} /s | findstr "\"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
相关资源
最近更新 更多