如何在PowerShell中实现CMD目录树批量执行命令的等价操作?
CMD递归遍历命令的PowerShell等价实现
1. 枚举目录树中所有文件并执行命令
CMD 原命令
FOR /R %F IN (*) DO @COMMAND-HERE ARGS-HERE
PowerShell 等价写法
完整语法
Get-ChildItem -Recurse -File | ForEach-Object { COMMAND-HERE ARGS-HERE $_.FullName }
Get-ChildItem -Recurse -File:递归遍历当前目录下的所有文件ForEach-Object:对每个遍历到的文件执行后续命令$_.FullName:代表当前文件的完整路径,可根据命令需求替换为$_(文件对象本身)或$_.Name(仅文件名)
简化别名写法
PowerShell支持命令别名,可缩短为:
gci -Recurse -File | % { COMMAND-HERE ARGS-HERE $_.FullName }
2. 仅枚举目录树中的目录并执行命令
CMD 原命令
FOR /R /D %D IN (*) DO @COMMAND-HERE ARGS-HERE
PowerShell 等价写法
完整语法
Get-ChildItem -Recurse -Directory | ForEach-Object { COMMAND-HERE ARGS-HERE $_.FullName }
Get-ChildItem -Recurse -Directory:递归遍历当前目录下的所有子目录- 其余参数含义与文件遍历场景一致
简化别名写法
gci -Recurse -Directory | % { COMMAND-HERE ARGS-HERE $_.FullName }
内容的提问来源于stack exchange,提问作者Govind Parmar
相关产品推荐
相关产品推荐

