簡體   English   中英

PS如何在文件名中間加符號

[英]How to add a symbol in a middle of a file name in PS

我已經根據所有者的要求修改了數千個文件。 現在,我需要添加最后一件事,但我不是 100% 知道如何去做。

場景如下 - 所有文件的開頭都有一個 10 位數字,我需要在數字后添加一個連字符。 字符串是一個變量,但它的長度始終相同。 1234567890abcdefgh.xls 就是一個例子

我已經使用 GCI 對符號和 static 部分進行了更改,但不確定如何調用插入文件的特定位置(在變量字符串的第 10 個字符之后)

任何想法都將受到歡迎!

您可以使用從-match比較的捕獲組中獲得的$matches

(Get-ChildItem -Path 'X:\WhereTheFilesAre' -File) | 
Where-Object { $_.BaseName -match '^(\d{10})([^-].*)' } |
Rename-Item -NewName { '{0}-{1}{2}' -f $matches[1], $matches[2], $_.Extension }

或者使用Substring()方法:

(Get-ChildItem -Path 'X:\WhereTheFilesAre' -File) | 
Where-Object { $_.BaseName -match '^\d{10}[^-]' } |
Rename-Item -NewName { $_.Name.Substring(0,10) + '-' + $_.Name.Substring(10) }

或使用 regex -replace運算符:

(Get-ChildItem -Path 'X:\WhereTheFilesAre' -File) | 
Where-Object { $_.BaseName -match '^\d{10}[^-]' } |
Rename-Item -NewName { $_.Name -replace '^(\d{10})', '$1-' }

您可以使用string.Insert()將一個字符串插入另一個字符串中的特定偏移量:

PS ~> '1234567890abcdefgh.xls'.Insert(10, '-')
1234567890-abcdefgh.xls

要應用於目錄中的所有文件,您可以執行以下操作:

Get-ChildItem -File |Where-Object Name -match '^\d{10}[^-]' |Rename-Item -NewName { $_.Name.Insert(10, '-') }

正則表達式模式^\d{10}[^-]將只匹配以 10 位數字開頭后跟連字符以外的內容的文件名(以避免重命名已經符合命名約定的文件)

暫無
暫無

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

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