如何让PowerShell批量添加图片扩展名的命令作用于所有子文件夹?
问题分析与解决办法
你的递归命令出错是因为语法参数混乱:Get-ChildItem -Recurse ls -file里的ls是多余的——ls本身就是Get-ChildItem的别名,不能把它当作参数和Get-ChildItem混用,同时参数顺序也不符合PowerShell的语法要求。
正确的递归处理命令
直接使用Get-ChildItem(或别名ls)搭配-Recurse(递归遍历)和-File(仅筛选文件)参数即可,以下两种写法都有效:
写法1(完整命令名)
Get-ChildItem -Recurse -File | Where-Object {$_.Extension -eq ''} | Rename-Item -NewName {$_.Name + '.jpeg'}
写法2(别名简化)
ls -Recurse -File | ? {$_.Extension -eq ''} | % {ren $_ ($_.Name + '.jpeg')}
安全测试建议
如果你担心误操作,可以先添加-WhatIf参数预览将要执行的重命名操作,不会实际修改文件:
Get-ChildItem -Recurse -File | Where-Object {$_.Extension -eq ''} | Rename-Item -NewName {$_.Name + '.jpeg'} -WhatIf
确认预览结果符合预期后,再去掉-WhatIf执行实际重命名。
内容的提问来源于stack exchange,提问作者MMedina
相关产品推荐
相关产品推荐

