[英]How to batch rename files in a directory from a list of names in a text file
我想使用Power Shell或批处理文件根据文本文件中的列表重命名文件夹中的几个文件。 本质上,我想在文件名后附加作者的姓氏(我将其存储在单独的文本文件中)。
例如,目前我有:
C:\\ myfiles文件
9-ART-2013.pdf
4-EGO-2013.pdf
2-ART-2013.pdf
我的文本文件(与文件顺序相同):
C:\\ myfiles文件
_Smith
_Jenkins
_McMaster
我希望将文件重命名如下:
9-ART-2013_Smith.pdf
4-EGO-2013_Jenkins.pdf
2-ART-2013_McMaster.pdf
我曾见过类似的问题,人们想递归地重命名文件,但他们总是使用通用的普通附加元素,例如添加下划线或在文件夹名称前添加前缀等。
例如https://serverfault.com/questions/6268/easy-way-to-rename-all-files-in-a-directory-in-windows
在PowerShell中将是:
$names = Get-Content c\myfiles
Get-ChildItem C:\somedir\*.pdf | Sort -desc |
Foreach {$i=0} {Rename-Item $_ ($_.basename + $names[$i++] + $_.extension) -WhatIf}
如果看起来可以正确复制,请删除-WhatIf
。
@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION <Text.txt ( for /f "tokens=1*delims=_" %%a in ('dir /b /a-d /o-d *-*-*.pdf') do if "%%b"=="" ( set "xand=" set /p "xand=" echo ren "%%~a" "%%~na!xand!%%~xa" ))
实现相同目的的另一种方法:
@echo off
setlocal EnableDelayedExpansion
rem Load the list of authors:
set i=0
for /F %%a in (myfiles.txt) do (
set /A i+=1
set "author[!i!]=%%a"
)
rem Do the rename:
set i=0
for /F %%a in ('dir /b *.pdf') do (
set /A i+=1
for %%i in (!i!) do ren "%%a" "%%~Na!author[%%i]!%%~Xa"
)
编辑 : 添加了新方法
如果名称文件列表具有“ OLD-Name NEW-Name”结构,则代码要简单得多:
for /F "tokens=1,2" %%a in (myfiles.txt) do ren "%%a" "%%b"
请注意,名称必须用空格分隔。
采用Endoro并简化:
@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
<texts.txt (
for /f "tokens=* delims=* " %%a in ('dir /b /a-d /o-d *-*-*.pdf') do (
set "xand="
set /p "xand="
ren "%%~a" "%%~na!xand!%%~xa"
))
上面的任何一种都可以通过一些调整来解决,但是最简单的方法是简单地创建一个文本文件,每行包含“当前文件名” ... TAB ...然后“我想要的文件名” 。
9-ART-2013.pdf 9-ART-2013_Smith.pdf
4-EGO-2013.pdf 4-EGO-2013_Jenkins.pdf
2-ART-2013.pdf 2-ART-2013_McMaster.pdf
然后将文件另存为rename_list.txt,并使用以下代码创建一个批处理文件。
for /F "tokens=1,2" %%a in (rename_list.txt) do ren "%%a" "%%b"
pause
调整好暂停线并使其正确运行后,您可以将其删除。 只需将rename_list.txt和批处理文件复制到要重命名的文件所在的文件夹中,然后运行该批处理文件。 如果您的文件夹很大,文件名很多,则可以通过运行以下行的批处理文件来将它们保存在文本文件中。
dir /D > filename_scrapper_output.txt
它将创建一个文本文件filename_scrapper_output.txt ,您可以使用它来启动上述的filename_scrapper_output.txt文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.