重命名批处理:如何在批处理中更改部分文件名
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。
假设我有一个包含许多子文件夹的主文件夹,其中有 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。