重命名批处理:如何在批处理中更改部分文件名

时间:2016-06-15 08:40:06

标签: batch-file cmd batch-processing file-rename batch-rename

让我说我的主文件夹有很多子文件夹,里面有excel文件。我想在所有子文件夹中更改文件名的某个部分。我尽我所能,但我是Batch的新手,我不知道如何解决它。 例如: - 目前版本file123 2016.xlsx - 预期版本file123 2017.xlsx

我的尝试:

@echo off
cd C:\example\

    setlocal EnableDelayedExpansion
    Set var1=2016
    Set var2=2017
    for /r %%G in (*.xlsx) do (
    set "filename=%%G"
    ren "!filename!" "!filename:%var1%=%var2%!"
)

如果您有任何解决方案,请告诉我们!谢谢! :)

1 个答案:

答案 0 :(得分:0)

您的行Set var1=2016中有一个尾随空格。批处理对空间非常挑剔,因此空间是变量的一部分。要避免这种情况,请使用以下语法:

set "var1=2016"

另一个错误:

ren /?说:ren [drive:][path]filename1 filename2
您无法提供目的地名称的路径。

试试这个:

for /r %%G in (*.xlsx) do (
    set "filename=%%~nxG"
    ren "%%G" "!filename:%var1%=%var2%!"
)

%%~nxG仅为您提供 n ame和e x 张力。