-1

我有一个目录 c:\test,其中包含文件 0001 test.pdf、0002ssssit.pdf、0003llllllllllll.pdf

我的目标是使用 PS 使用 aa 循环遍历目录并将文件重命名为:

0001.pdf 0002.pdf 0003.pdf

我不断收到路径错误

$List = get-childitem "C:\test"
$List |Format-Wide -Column 1 -property name
ForEach($File In $List)
{
    $First4 = $File.name.substring(0,4)

    Rename-Item -newname $First4".pdf"
}
4

2 回答 2

2

你需要将原始文件路径传递给Rename-Item,否则它将不知道要重命名什么!

任何一个:

$file | Rename-Item -NewName "${First4}.pdf"

或者

Rename-Item -LiteralPath $file.FullName -NewName "${First4}.pdf"

体内foreach

您也可以使用单个管道来完成相同的操作(-NewName支持管道绑定):

$List | Rename-Item -NewName { $_.Name.Substring(0,4) + $_.Extension }
于 2019-09-12T17:27:24.900 回答
0

尝试这样的事情:

Get-ChildItem "c:\temp" -file "*.pdf" | 
    where Name -match "^[0-9]{4}" | 
        rename-item -NewName {"{0}{1}" -f $_.BaseName.Substring(0, 4), $_.Extension}
于 2019-09-12T17:54:04.707 回答