我正在尝试从BATCH转移到PowerShell,我正在尝试转换自己的脚本。
我的问题是在循环中的范围:我最初的批处理脚本就像
for /L %%U in (123,2,323) do ECHO %%U
字符串
并将打印
123
125
127
...
型
对于PowerShell,范围为123..323,因此
123..323 | % {Echo $_ }
型
会给予我
123
124
125
...
型
是否有一种方法可以使用不同于1的步长来设置范围?我找到的所有例子要么列出所有的数字(我有几百个...),要么使用数字之间的两个点。
3条答案
按热度按时间zz2j4svz1#
简单的谷歌搜索应该已经找到了你。
字符串
(初始化;保持循环运行的条件;迭代)
vlf7wbxs2#
使用原始方法(步骤2):
字符串
步骤3及以上:
型
rqdpfwrv3#
假设变量
$n
包含步长值,创建步长值为 n 的范围的更简洁的方法是:字符串
?
是Where-Object
cmdlet的别名。$_ % $n
可以更明确地写为$_ % $n -eq 0
,因此上面也可以写为:型
Where-Object
用作过滤器,并且仅包括其与步长的模数等于0的值:$_ % $n -eq 0
。之所以可以写成!($_ % $n)
,是因为PowerShell将0
视为false
,而将其他数字视为true
。因此,用!
对0
求反使其计算为true
,然后使该数字包含在范围中。所以,对于步骤2,你可以这样写:
型
这仅包括偶数(
124, 126, ...
)。要只包含奇数(从123开始),一个简单的技巧是:型
当模数的值为1时,这发生在奇数上,它被包括在最终范围中。