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 命令使用正则表达是匹配,只需要将要替换的文件名覆盖,后缀保持不变。

上一篇:尴尬,微软的PowerShell竟是Linux用户最多


下一篇:【内网渗透】-端口扫描