PowerShell教程

Powershell 批量重命名文件

本文主要是介绍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 批量重命名文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!