我有一个包含多个文件的文件夹。所有文件名都是:
"1 зелен.doc"
"2 будда.doc"
"3 конфуций.doc"
所有文件都是名称开头的第一个数字的顺序。 我有一个文件名列表,包含在文本文件中。文本文件中的每一行也是有序的。因此,第一行是第一个文件名的名称,第二行是第二个文件名,依此类推。 如何使用命令提示符重命名文件?
非常感谢!
答案 0 :(得分:3)
@echo off
setlocal EnableDelayedExpansion
rem The list of filenames will be read from redirected Stdin
< filenames.txt (
rem Process the files via FOR command
for %%a in (*.*) do (
rem Read the next name from the list
set /P name=
rem Rename the file
ren "%%a" "!name!"
)
)
答案 1 :(得分:1)
假设文件名列表完全对应于列出的目录,您可以通过将文本文件的内容推送到数组,将目录列入另一个数组,然后使用for /L
循环遍历两个数组来实现。这样:
@echo off
setlocal enabledelayedexpansion
set "count=0"
for /f "delims=" %%I in (textfile.txt) do (
set "to[!count!]=%%I"
set /a count+=1
)
set "count=0"
for %%I in (*.doc) do (
set "from[!count!]=%%I"
set /a count+=1
)
for /L %%I in (0,1,!count!) do (
if exist "!from[%%I]!" (
echo ren "!from[%%I]!" "!to[%%I]!"
)
)
将此脚本保存到.bat
文件并运行它。如果您对结果满意,请在echo
之前移除ren
。
答案 2 :(得分:0)
这个问题已经存在很长时间了,但是对于某些人(例如我,到2020年的今天,我正在尝试这样做)可能很有用。 您可以在Excel上创建一个工作表,其第一列“ Rem”第二个为文件名,第三个为每个文件的新名称。然后复制三列并粘贴到CMD(MS-DOS命令提示符)中,即可完成操作。
Excel应该是这样的:
Rem old-name.txt new-name.txt
您必须非常小心,旧名称和新名称都不能有空格,我所做的是用“-”替换(使用任何程序来更改名称)空格,然后放回它们。
我希望这对某人有用。