簡體   English   中英

使用powershell重命名名稱中間帶有遞增數字的文件

[英]Renaming files with incremented number in the middle of the name using powershell

我為此進行了長期而艱苦的搜索,但似乎無法找到一種方法來完成多個目錄中文件的重命名。 問題是我需要在文件名中間插入一個唯一的數字序列。 以下是我的文件名示例:

8675309_FileName1_ExtraSuff1_Extrastuff2 and some more stuff_012345.html
2020202_FileName2_ExtraSuff1_Extrastuff2 and some more stuff_012345.html
... etc.

重命名以插入第 7 個字段的副本、數字排序和日期,如下所示:

8675309_8675309_00001_2022_FileName1_ExtraSuff1_Extrastuff2 and some more stuff_012345.html
2020202_2020202_00002_2022_FileName2_ExtraSuff1_Extrastuff2 and some more stuff_012345.html
... etc.

這是我迄今為止嘗試過的:

$i = 1 Get-ChildItem -Filter *.html | ForEach-Object{ Rename-Item -Path $ .FullName -NewName (($ .BaseName -split ' ')[0] + ' ' + ('{0:D5}' -f $i) + ' 2022' + ' Performance_Eval ' + ($ .BaseName -split ' ')[1] + ($ .BaseName -split ' ')[2] + ($ .BaseName -split ' ')[3] + ' ' + ($ .BaseName -拆分 ' ')[4] + $_.Extension ) $i++ }

這給了我大部分我需要的東西,但不是額外的前 7 個字符:

8675309_00001_2022_FileName1_ExtraSuff1_Extrastuff2 和其他一些東西_012345.html

我可以調整這個腳本以引入初始字符嗎?

由於您的文件名似乎具有結構或獨特的字符,您可以將它們拆分,您可以使用以下內容:

$i = 1 
Get-ChildItem -Filter *.html | 
ForEach-Object{
    $SplitName = $_.BaseName -split '_'
    $NewName = ((@($SplitName[0]) * 2) -join '_') + '_' + ('{0:D5}' -f $i) + '_2022' + ($SplitName[1..($SplitName.Length -1)] -join '_') + $_.Extension 
    Rename-Item -Path $_.FullName -NewName $NewName
    $i++
}

我很好奇:為什么你需要兩次相同的數字序列?

這非常有效! 謝謝你的幫助,奧拉夫。

就倍數而言,這是由於文件被用作讀取批量上傳的結果。 原始名稱無法與我們的實用程序一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM