[英]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.