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%\>" |
下面我附上一个打印屏幕
命令逐行运行
使用&运行命令
- 您可以简单地创建一个批处理文件并运行它一次。
- 我有kace k1000,我想在一行命令中插入这个命令。
- @比这更重要的是,你怀疑一个骗子是对的。这一定是以前问过的。但我太懒了,没法用谷歌搜索到正确的那个。P
- 只是为了记录,我不认为这是文章的副本,它也被链接了。
试试这里:
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!\^>)" |
- 谢谢你的回答,但这不管用。对于/f%i in('getmac^ find"-")do(set str=%i&;set string=%str:-=%&;&;reg query hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8/s findstr <%string%>")
- 刚刚更新了我的答案
- 我已经尝试运行/f%i in('getmac^ find"-")do(set str=%i&;set string=!STR:-=!&;&;reg query hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8/s findstr <!琴弦!>")和cmd/v:on/c"for/f%i in('getmac^ find"-")do(set str=%i&;set string=!STR:-=!&;&;reg query hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8/s findstr <!琴弦!>命令中的")",但不起作用。
- 谢谢你的帮助,但你的回答仍然不能解决我的问题
- 没问题。如果在命令中运行最后一个命令(命令/v:on…),会得到什么?你使用的是什么操作系统?
- 如果我运行命令/v:on…我得到系统找不到指定的文件。我使用Windows XP SP 3。
- 当你运行cmd /v:on /c"for /f %i in ('getmac^|find"-"') do (set str=%i && echo str=!str!)"时,你看到了什么?请提供所有输出。通常我会看到for循环在执行它之前回显它被替换的命令。我马上换到XP。
- 如果我运行命令/v:on/c"for/f%i in('getmac^ find"-")do(set str=%i&;echo str=!STR!)我得到结果(设置str=00-aa-22-bb-33-cc&;echo str=!STR!)str=00-aa-22-bb-33-cc
- 抱歉,我无法附加打印屏幕。
- 没关系,我明白了。至少for循环工作正常。下一步是检查:cmd /v:on /c"for /f %i in ('getmac^|find"-"') do (set str=%i && set string=!str:-=! && echo string=!string!)"。
- 如果我运行命令/v:on/c"for/f%i in('getmac^ find"-")do(set str=%i&;set string=!STR:-=!&;amp;echo string=!绳子!)我得到结果(set str=00-aa-22-bb-33-cc&;set string=!STR:-=!&;amp;echo string=!字符串!)字符串=00AA22BB33CC
- 那么你从REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318} /s | findstr"\<00AA22BB33CC\>")得到了什么?
- 如果我在命令末尾运行reg query hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8/s findstr <00aa22bb33cc >"without"),我会得到结果networkaddress reg_sz 00aa22bb33cc。结果和我预期的完全一样。
- 好啊。但我不明白为什么组合命令失败了。你从cmd /v:on /c"REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-1??1CE-BFC1-08002bE1031??8} /s | findstr"\<00AA22BB33CC\>""得到了什么?
- 如果我在命令的开头和结尾运行cmd/v:on/c reg query hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8/s findstr"<00aa22bb33cc>"without",我会得到结果网络地址reg_sz 00aa22bb33cc。结果和我预期的完全一样。
- 我刚刚了解到,您需要使用类似于^<^>的插入符号来避开重定向符号。你能运行这个命令吗: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"\^")"?我承认现在整个命令串看起来有点像黑客。P
- 如果我运行命令/v:on/c"for/f%i in('getmac^ find"-")do(set str=%i&;set string=!STR:-=!&;&;reg query hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8/s findstr ^<!琴弦!^>")"并将输出输出导出到文本文件,我得到的文本文件包含1213行句子。我认为这个命令显示了hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8_
- 如果你运行:cmd /v:on /c"for /f %i in ('getmac^|find"-"') do (set str=%i && set string=!str:-=! && echo"\^")",你会得到什么?我正在努力解决你在XP上的问题。
- 如果我运行命令/v:on/c"for/f%i in('getmac^ find"-")do(set str=%i&;set string=!STR:-=!&回音^<!琴弦!^>")"我得到结果(set str=00-aa-22-bb-33-cc&;set string=!STR:-=!&;&;echo"<!琴弦!>")"<00aa22bb33cc>
- 我刚刚更新了我的答案。请测试命令/v:on…命令并让我知道。
- 像魔法一样完美工作。非常感谢你
- 我从7点就开始关注这个问题,非常感谢您的反馈。因为我也是xp sp3的首选用户,所以我只想解决这个问题。谢谢你。
您可以使用&字符分隔行,如本问题中所示。
- 如果我使用&;
- 在Kace K1000中不起作用?它在命令中为我工作。您收到什么错误消息?
- 如果我在命令行中逐行运行命令,效果很好,但是如果我使用&;这并不像逐行运行命令那样给出结果。
- 那么,它会产生什么结果,又有什么不同呢?
- 如果我一行一行地在命令行中运行,我会得到结果networkaddress reg_sz 00aa22bb33cc。如果我使用&;I get result set str=00-aa-22-bb-33-cc&set string=%str:-=%&;reg query hklmsystemcurrentcontrolsetcontrolclass 4d36e972-e325-1&zwnj;&8203;1ce-bfc1-08002be1031&zwnj;&8203;8/s findstr"<%string%>"
- 您还需要注意延迟变量扩展。使用!str:-=!和!string!。我编辑了我的答案,请看那里的示例。