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