我有一个包含这样文件的文件夹:
11223.xml,11223_2.xml,11223_3.xml ...
1123是常数,它可以是任何其他模式,但对于给定的文件夹,模式将是常量。
我有一个txt文件,其文件名如下:
文件名不必如图所示编号,但也无关紧要。
是否有DOS命令或PowerShell方法将文件夹中的文件重命名为文本文件中的名称。 目前我从文本文件中复制每个文件名,一次一个,并重命名文件夹中的文件,如下所示:
11223.xml = Index.xml
11223_2.xml = about.xml
谢谢&问候。
答案 0 :(得分:0)
从您的示例中看起来您希望将现有文件的名称(按字母数字顺序)更改为输入文件中的名称(按照放入那里的顺序)。如果我的假设是正确的,那么像这样的PowerShell脚本应该可以工作:
[Collections.ArrayList]$newNames = Get-Content 'C:\path\to\newnames.txt'
Get-ChildItem 'C:\some\folder' | ? { -not $_.PSIsContainer } | sort Name | % {
Rename-Item $_ ($newNames[0] + $_.Extension)
$newNames.RemoveAt(0)
}
请注意,要使其正常工作,您的文件夹中的文件数必须与文件中的行数相同。
答案 1 :(得分:0)
下面的批处理文件执行您想要的重命名过程。如果文件多于名称,则使用数字增加的标准名称。如果有更多名称,则不使用其他名称。如果您愿意,可以修改此程序以包括每个新名称前面的数字。
@echo off
setlocal EnableDelayedExpansion
set i=0
< fileNames.txt (
for /F "delims=" %%a in (1123*.xml) do (
set "name="
set /P name=
if not defined name (
set /A i+=1
set name=noName_!i!
)
ren "%%a" "!name!.xml"
)
)