PowerShell - 重命名本地路径\ script目录和所有子文件夹中的所有文件

时间:2016-02-04 21:52:00

标签: file powershell rename

所以,尝试重命名当前脚本目录和所有子文件夹中找到的任何文件。不想工作。这就是我到目前为止......我做错了什么?我遇到的问题是它没有重命名子文件夹中的文件。

<# Renames all files in the working directory to have an extension of .hd #>

$files = Get-ChildItem $PSScriptRoot -Recurse | Where-Object {$_.Extension -match ".jpg|.jpeg|.png|.bmp|.gif|.3gp|.mp4|.webm|.mkv"}
ForEach ($file in $files) {
     $filenew = $file.Name + ".hd"
     Rename-Item $file $filenew
}

2 个答案:

答案 0 :(得分:1)

您正在将<object data="/svgs/mysvg.svg" type="image/svg+xml">对象传递给rename-item的路径参数,而不是filesystem

改变这个:

string path

到此:

Rename-Item $file $filenew

您还可以将脚本简化为:

Rename-Item -Path $file.fullname -NewName $filenew

注意:移除Get-ChildItem -Path $Path -Include *.jpg,*.png,*.mp4 -Recurse | Rename-Item -NewName { $_.Name + '.hd' } -WhatIf 以应用重命名操作

答案 1 :(得分:0)

无论如何,所以$ file.Name包含扩展名所以你需要$ file.Basename

$files = Get-ChildItem $PSScriptRoot -Recurse | Where-Object {$_.Extension -match ".jpg|.jpeg|.png|.bmp|.gif|.3gp|.mp4|.webm|.mkv"}
ForEach ($file in $files) {
     $filenew = $file.BaseName + ".hd"
     Rename-Item $file $filenew
}