powershell - 如何从父文件夹重命名 powershell 中的多个文件?

您好,我想知道有没有办法替换父文件夹中的多个文件名?

我可以使用下面的命令重命名多个文件,但我必须先访问每个文件夹才能重命名多个文件。

dir .\* -include ('*.mp4','*.srt') | Rename-Item -NewName { $_.Name -replace '\[','' -replace '\]','' } 

我试图将 dir .\* 替换为 dir .\**\* 以从父文件夹中选择,但没有成功。

我错过了什么?

最佳答案

您可以通过将 -Recurse 开关添加到 Get-ChildItem(dir 是 Get-ChildItem 的别名)来做到这一点。
搜索包含方括号的文件时,需要使用-LiteralPath参数。

此外,请注意,如果您将结果直接通过管道传输到 Rename-Item..
这样做时,Get-ChildItem 可能会再次获取已经处理过的文件,这当然会浪费时间,因此您可以这样做:

$rootFolder = 'X:\WhereTheFilesAre'
(Get-ChildItem -LiteralPath $rootFolder -Include '*.mp4','*.srt' -File -Recurse) | 
    Rename-Item -NewName { $_.Name -replace '\[|]' } 

$rootFolder = 'X:\WhereTheFilesAre'
$files = Get-ChildItem -LiteralPath $rootFolder -Include '*.mp4','*.srt' -File -Recurse
foreach ($file in $files) { 
    $file | Rename-Item -NewName { $file.Name -replace '\[|]' } 
}

https://stackoverflow.com/questions/68784226/

相关文章:

indexing - 为什么索引 HashMap 不返回引用?

python - 如何减少 lambda 表达式中辅助函数的使用?

reactjs - RTK查询 |使来自另一个 API 服务的 API 服务的缓存无效

visual-studio-code - 如何在VSC终端创建文件?

reactjs - Material-UI:一个组件正在将 SwitchBase 不受控制的检查状态

node.js - express-session不设置cookie?

javascript - 在大写字母前添加空格,然后将它们转为小写字符串

angular - 延迟加载模块时构建错误

java - 没有同步顺序的程序

node.js - 如何在带有 Nest.js 的 Node 中分离客户端和服务器应用程序时获取用户