让我说我的主文件夹有很多子文件夹,里面有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%!"
)
如果您有任何解决方案,请告诉我们!谢谢! :)
答案 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 张力。