将xargs Bash命令转换为PowerShell?

21

我有一个简单的Bash命令,使用ImageMagick自动调整一些低流量网站上的图像大小 - 我想将其转换为PowerShell命令,以便我不必在Web服务器上安装Cygwin。有人可以在这里提供他们的PSh技能吗?

ls | xargs -I {} rconvert "{}" -resize 128x128\> "{}"
1个回答

34

您最好将ls的输出通过管道符号传递给foreach-object命令,就像这样(%是foreach-object的别名):

ls | %{rconvert $_ -resize 128x128}

编辑:ls命令在管道上输出FileInfo或DirectoryInfo对象的列表。要过滤掉DirectoryInfo对象,请使用where-object筛选器(?是别名):

ls | ?{-not $_.PSIsContainer} | %{rconvert $_ -resize 128x128}
如果你需要在命令中访问完整的路径名,使用 FileInfo 对象的 FullName 属性($_ 本身将被解析为 $_.Name,它只是文件名):
ls | ?{-not $_.PSIsContainer} | %{rconvert $_.FullName -resize 128x128}

我认为你应该将 $_ 更改为 $_.FullName。 - BeWarned
3
你可能是对的,那样更加健壮,但是该命令是从当前工作目录运行的,所以应该可以工作。 - zdan
在第二个和第三个命令中,你多了一个"{"符号,需要将其删除(在"%"之前)。 - JasonMArcher
不幸的是,这种方法无法提供并行性。 - Raúl Salinas-Monteagudo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接