我已經修改了數千個檔案,其中包含所有者要求的各種內容。現在,我需要添加最后一件事,我不是 100% 知道如何去做。
場景如下 - 所有檔案的開頭都有一個 10 位數字,我需要在數字后添加一個連字符。字串是一個變數,但它始終是相同的長度。1234567890abcdefgh.xls 就是一個例子
我使用 GCI 對符號和靜態部分進行了更改,但不確定如何呼叫插入到檔案的特定位置(在變數字串的第 10 個字符之后)
任何想法都將受到歡迎!
uj5u.com熱心網友回復:
您可以使用$matches從比較的捕獲組中獲得的-match:
(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) }
或使用正則運算式-replace運算子:
(Get-ChildItem -Path 'X:\WhereTheFilesAre' -File) |
Where-Object { $_.BaseName -match '^\d{10}[^-]' } |
Rename-Item -NewName { $_.Name -replace '^(\d{10})', '$1-' }
uj5u.com熱心網友回復:
您可以使用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 位數字開頭后跟連字符以外的其他內容的檔案名(以避免重命名已經符合命名約定的檔案)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474162.html
標籤:电源外壳
上一篇:如何從鏈接中獲取特定值?電源外殼
