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

Re rename batch: how to change part of filenames in Batch

假设我有一个包含许多子文件夹的主文件夹,其中有 excel 个文件。我想更改所有子文件夹中文件名的某一部分。我尽力了,但我是 Batch 的新手,我不知道如何解决它。 例如: - 当前版本文件 123 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%!"
)

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

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

set "var1=2016"

另一个错误:

ren /? 说:ren [drive:][path]filename1 filename2
您不能为目标名称提供路径。

试试这个:

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

%%~nxG 只给你 name 和 extension。