cmd 和 powershell 中的 For 循环-1 此时是意外的

cmd 和 powershell 中的 For 循环-1 此时是意外的

我需要for从 powershell 在 cmd 中运行一个循环...也就是在 PS 提示符下:

cmd /c For /L %i in (1,1,5) DO (Echo %i)

但是,我得到了“1 此时是意外的”

我研究的其他回复表明“ %i”是命令行,“ %%i”是脚本/批处理——但我都试过了,都没有用。有什么想法吗?难道这不可能吗?

答案1

关于引用规则帮助主题(Get-Help about_quoting_rules -Full),使用单引号或双引号,如下所示:

. cmd /c 'For /L %i in (2,2,5) DO @(Echo %i)'
2
4

或者

$step=2
. cmd /c "For /L %i in (2,$step,5) DO @(Echo %i)"
2
4

然而,关于解析帮助主题(Get-Help about_parsing -Full),还有更多方法可以实现这一点:

  • 经过特别指定转义一些 PowerShell 有害符号,例如() 括号$ 美元符号@ 商业等,另请参阅Get-Help about_Escape_Characters (未找到在线版本)。在 Windows PowerShell 中,转义字符是` 反引号,也称为重音符(代码点U+0060,ASCII 96).:
cmd /c For /L %i in `(2,1,4`) DO `@`(Echo %i`)
2
3
4
  • 通过使用停止解析符号--%)`(在 PowerShell 3.0 中引入,指示 PowerShell 不要将输入解释为 PowerShell 命令或表达式)。此技术比使用转义字符更容易防止误解:
cmd /c --% For /L %i in (2,1,4) DO @(Echo %i)
2
3
4

相关内容