Powershell 批量重命名文件


Powershell 重名文件方法


 

前言

Powershell 是Windows10 自帶的可編程控制台,通過命令行可以實現復雜功能,最近由於工作需要,要將位於不同目錄下面的文件以統一的方式命名。具體要求是學號-姓名-文章標題.docx,實現思想為:1. 將目錄下面的文件名存儲到變量$data里面,將所有學生信息(學號、姓名、文章題目)做成csv 文件,最后使用管道方式實現。

實現代碼:

1. list.csv 文件包含所有學生信息

id,name,sex,teacher,class,title

2. $data 變量存儲所有目錄下的原始文件信息 

$data = ls -Recurse -File -Include *.docx,*.doc |Sort-Object

注: -include 參數可以指定多個不同文件類型,-filter 只能指定一個。

3. 使用管道命令處理文件名

 使用管道首先導入list.csv ,然后在$data  中使用-match 方法匹配含有學號的記錄,最后使用 -replace 替換文件名中名稱部分,后綴保持不變。

Import-Csv list.csv | ForEach-Object { if ($a=$data -match $_.id) 
{ Rename-Item $a.fullname -newname  ($a.name -replace'.*\.' , ($_.id+'-'+$_.name+'-'+$_.title'.'))} }

PS: 

      $a=$data -match $_.id 將目錄下所有文件中與list.csv 中匹配的記錄找出到,使用了foreach-object 遍歷list 的方法,每次匹配到一條記錄。(請保證每個文件名含有唯一id)

      rename-item 命令使用正則表達是匹配,只需要將要替換的文件名覆蓋,后綴保持不變。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM