从Win7升级到Win10后,PowerShell遍历特定类型文件的等效语法
PowerShell中等效于CMD批量转码命令的写法
直接等效命令(管道式)
Get-ChildItem -Filter *.mp4 | ForEach-Object { ffmpeg -i $_.FullName "$($_.BaseName).avi" }
逐部分对应原CMD命令:
- 原CMD中
for %F in (*.mp4)→ PowerShell里用Get-ChildItem -Filter *.mp4获取当前目录下所有.mp4文件,通过管道传递给后续循环处理。 - 原CMD中
%F(完整文件路径) → PowerShell里用$_.FullName,$_指代当前循环到的文件对象。 - 原CMD中
%~nF(不带扩展名的文件名) → PowerShell里用$_.BaseName,直接获取文件的基础名称(自动剔除扩展名)。
另一种foreach循环写法(块级语法)
如果习惯用显式的foreach循环,也可以这样写:
foreach ($file in Get-ChildItem -Filter *.mp4) { ffmpeg -i $file.FullName "$($file.BaseName).avi" }
这里把所有.mp4文件存入$file集合,逐个循环处理,效果和管道写法完全一致。
内容的提问来源于stack exchange,提问作者koberulz
相关产品推荐
相关产品推荐

