多个命令cmd在/ f的单行中


Multiple commands cmd in a single line of for /f

本问题已经有最佳答案,请猛点这里访问。

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

我试过使用&,但是如果我一行一行地运行命令并使用&,结果会有所不同。

1
2
3
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%\>"

下面我附上一个打印屏幕

命令逐行运行

使用&运行命令


试试这里:

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!\^>)

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

1
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!\^>)"


您可以使用&字符分隔行,如本问题中所示。