我需要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
,ASCII96
).:
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