PowerShell 重命名项目剥离文件名
PowerShell Rename-Item strip filename
能否使用"Rename-Item"去除不带扩展名的文件名,只在文件名开头留下几个字符?
例如。
“0001 filename.txt”>“0000.txt”
您可以像这样使用与子字符串的组合:
$a = "0001 filename.txt"
Rename-Item -Path $a -NewName $("$($a.Substring(0,4)).txt")
如果您总是像示例中一样使用相同的约定,数字和非数字
您可以使用:
$Filename = Get-ChildItem 'C:\folder[=10=]01 filename.txt'
Rename-Item $Filename -NewName ($Filename.Name -replace "\W+\w+[^.txt]")
如果约定不同,您需要创建不同的正则表达式
我也把我的扔在这里。您可以只使用 .Split()
方法在空格(或括号内的任何字符)处断开字符串。我们拆分然后索引到我们想要的值。
$a = "0001 filename.txt"
$a.Split()[1]
>filename.txt
如果我们想这样做来重命名您的文件,它看起来像这样。
Rename-Item $Filename -NewName $a.Split()[1]
将 "E:[=16=]00 File1.txt" 替换为您的文件路径。我假设您有很多文件要做,这里是几个文件的格式。
$File = "E:\File1.txt","E:\File2.txt","E:\File3.txt"
这是完整代码。你也可以给一个充满文件的目录,但如果该目录有子文件夹,它们可能会被重命名。您只需根据自己的喜好更改前两行。
$File = "E:[=11=]00 File1.txt","E:[=11=]00 File2.txt"
$CharsToKeep = 7
Get-ChildItem $File |
ForEach-Object{
$Orig = $_.fullname
$NewName = ($_.BaseName).Substring(0,$CharsToKeep) + $_.Extension
Rename-Item -path $Orig -NewName $NewName
} # end Foreach. Also end Get-ChildItem
能否使用"Rename-Item"去除不带扩展名的文件名,只在文件名开头留下几个字符?
例如。 “0001 filename.txt”>“0000.txt”
您可以像这样使用与子字符串的组合:
$a = "0001 filename.txt"
Rename-Item -Path $a -NewName $("$($a.Substring(0,4)).txt")
如果您总是像示例中一样使用相同的约定,数字和非数字
您可以使用:
$Filename = Get-ChildItem 'C:\folder[=10=]01 filename.txt'
Rename-Item $Filename -NewName ($Filename.Name -replace "\W+\w+[^.txt]")
如果约定不同,您需要创建不同的正则表达式
我也把我的扔在这里。您可以只使用 .Split()
方法在空格(或括号内的任何字符)处断开字符串。我们拆分然后索引到我们想要的值。
$a = "0001 filename.txt"
$a.Split()[1]
>filename.txt
如果我们想这样做来重命名您的文件,它看起来像这样。
Rename-Item $Filename -NewName $a.Split()[1]
将 "E:[=16=]00 File1.txt" 替换为您的文件路径。我假设您有很多文件要做,这里是几个文件的格式。
$File = "E:\File1.txt","E:\File2.txt","E:\File3.txt"
这是完整代码。你也可以给一个充满文件的目录,但如果该目录有子文件夹,它们可能会被重命名。您只需根据自己的喜好更改前两行。
$File = "E:[=11=]00 File1.txt","E:[=11=]00 File2.txt"
$CharsToKeep = 7
Get-ChildItem $File |
ForEach-Object{
$Orig = $_.fullname
$NewName = ($_.BaseName).Substring(0,$CharsToKeep) + $_.Extension
Rename-Item -path $Orig -NewName $NewName
} # end Foreach. Also end Get-ChildItem