0%

根据列表批量重命名文件(Windows)

最近遇到一个需求,需要根据一个列表将文件批量重命名,比如:

有一个文件夹,里面的文件是1.jpg, 2.jpg, 3.jpg, …, 99.jpg,需要将它们重命名成tom.jpg, jerry.jpg, lucy.jpg, …, lili.jpg,而新的文件名单独整理在一个txt文件中。

话不多说,上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#
# define some vars:
#
$myDir2Handle = "folder"
$myFilesList = "names.txt"

#
# get files list in dir subdir2handle:
#
$xarr = (Get-ChildItem $myDir2Handle).name
$nx = $xarr.length

#
# get list file content in another array:
#
$yarr = Get-Content $myFilesList
$ny = $yarr.length
#$yarr[0]
#exit(0);

#
# get minimum of the 2 lengths:
#
$nMin = [math]::min($nx, $ny)

#
# rename items:
#
for($i = 0; $i -lt $nMin; $i++) {
Write-Host Rename $xarr[$i]
Move-Item ($myDir2Handle + "/" + $xarr[$i]) ($myDir2Handle + "/" + $yarr[$i])
}

新建一个文件,命名为rename.txt,将上述代码粘贴进去后,重命名为rename.ps1。

将新文件名保存到同目录的names.txt中,一行一个。

在同目录新建一个folder文件夹,将需要重命名的文件放进去。

右击rename.ps1,选择“使用PowerShell运行”即可。