如何使用命令行重命名文件

时间:2014-05-01 08:24:30

标签: command-line cmd

我想重命名2个文件" Data1.txt"到" Log1.rtf"和" Data2.txt"到" Log2.rtf"

我目前正在使用此代码

@ECHO OFF
FOR %%I IN ("%~dp0*.txt") DO (
SET "ext=%%~xI"
SETLOCAL EnableDelayedExpansion
RENAME "%%I" "%%~nI!Log.rtf"
ENDLOCAL
)

但是它给出了输出" data1log.rtf"和" data2log.rtf"

4 个答案:

答案 0 :(得分:1)

当然:

重命名“%% I”“%%〜n我!Log.rtf”

但是它给出了输出data1 log.rtf和data2 log.rtf

顺便说一句。您尝试使用setlocal delayedexpansion和单!来实现什么?

编辑:如果您坚持使用for(因为您可能需要重命名许多文件):

@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
 set file=%%i
 set file=!file:Data=Log!
 set file=!file:.txt=.rtf!
 echo ren %%i !file!
)

第一个set将变量file设置为文件名

第二个用Data

替换Log

第三个用.txt

替换.rtf

然后将原始文件名(%%i)重命名为更改的文件名(!file!

echo只是在屏幕上显示命令而不是真正重命名文件。很适合测试。如果你确定代码有,你想要什么,只需删除{{1} })

需要echo来使用变量,该变量在同一个块内的块(在setlocal enabledelayedexpansion(之间)内更改。因此,您必须将变量用作)而不是!var!

注意:当然这段代码可以改进,但作为初学者:尽可能保持简单(和可读)。例如,此代码将替换%var%,但不会替换Datadata,它不会处理文件名中的空格,...

答案 1 :(得分:0)

如果您使用单独的代码重命名每个文件,或者这会破坏对象,它可能会更好吗? 该网站显示了如何使用命令行重命名文件: http://www.sevenforums.com/tutorials/56013-file-folder-rename-command-prompt.html

答案 2 :(得分:0)

for %%a in ("%~dp0data*.txt"
) do for /f "delims=DdAaTt" %%b in ("%%~na"
) do echo ren "%%~fa" "log%%b.rtf"

它只是迭代指定的文件列表,对于每个文件名,使用不必要的字符作为aditional for循环的分隔符。这样只剩下数字并用于重命名文件。

要重命名的命令将回显到控制台。如果输出正确,请删除echo命令以重命名文件。

答案 3 :(得分:0)

用户mv命令来重命名Windows中的文件(使用CLI)

如以上答案中所述,mv命令也可以在Windows中使用,以重命名文件名。我尝试了建议的renameren命令,但出现错误:bash: ren: command not found.

在下面使用更改文件名: mv filename new_filename