我試圖使用PowerShell ISE幫助我做到以下幾點:Powershell ISE - 如何複製許多文件並同時對其進行重命名?
- 執行許多文件的搜索(用一個擴展名爲* props.tmpl)特定的文件夾下,幷包括所有子目錄。
- 找到後,我想將該文件複製到當前位置,但是擴展名爲* .tmpl2(我真正想要的是跳過此步驟並將* props.tmpl複製到名爲* props的文件中)
- 然後重命名所有* .tmpl2文件並完全刪除tmpl2,只留下* .props擴展名。
理想情況下,我想要的是將現有文件複製到具有新名稱的同一目錄中。看起來,我在Powershell ISE上運行的所有搜索都沒有提供我需要的正確信息(或者我沒有找到正確的方法來做到這一點 - 嘗試'powershell ise複製許多新名稱的文件'沒有幫助。
我不得不更換一塊下來的工作,但我不再想消除原有的TMPL文件(它們是模板,所以我想在以後回顧他們的原創內容)。
我在做什麼,以取代他們的是這樣的:
Get-ChildItem -Filter "*props.tmpl" -Recurse |
Rename-Item -NewName { $_.name -replace '.tmpl',''}
這不是完全刪除原始文件的偉大工程等
我開始嘗試拼湊一些東西在一起,但我不知道如何正確命名副本,並停止在這一點上只有一個錯誤(這是一個嘗試跳過額外的副本,只是簡單地重命名副本加入的「* .tmpl2」)的額外步驟:
# Get all *props.tmpl files
Get-ChildItem -Filter "*props.tmpl" -Recurse |
# Iterate through each found file
ForEach-Object {
Copy-Item $_.name |
Rename-Item -NewName { $_.name -replace '.props.tmpl','.props' }
}
任何幫助將是非常讚賞(沒有太大的Powershell的傢伙,但我努力學習,因爲PowerShell的往往是多了幾分活力然後是oldschool批處理腳本)。
在此先感謝
從@ssennett
這是我的最終版本每幫助這個腳本的最終版本:
# Get all *props.tmpl files
Get-ChildItem -Filter "*props.tmpl" -Recurse |
# Iterate through each found file and copy it to non-template form in same location
ForEach-Object {
Copy-Item $_.FullName ($_.Name -replace '.tmpl','')
}
剛剛意識到,我應該澄清一下:管道後的%是「Foreach」的別名。 – ssennett
非常感謝@ssennett。這正是我所需要的 – Steve
我只注意到這不是遞歸地處理子目錄中的文件(雖然它會拾取文件名稱,但它並不會在物理上改變名稱)。你知道什麼會打破'-Recurse'國旗@ssennett? – Steve