用bat文件替换文件夹和子文件夹中的文件名

问题描述 投票:0回答:1

此代码适用于一个文件夹(在FOR循环前删除/ r选项时,此代码有效,但是当我启用/ r选项时,它可以查看文件,但不能重命名它们。

我想将文件的中间部分从“ -24px”重命名为“ lol”

@echo on
setlocal enableDelayedExpansion
for /r %%F in (*-24px*) do (
  set filename="%%F"
  ren "!filename!" "!filename:-24px=lol!"
)

如上所述,它可以看到文件及其路径,但会引发语法错误

输出:

(
  set filename="C:\node_project\fold\1-24px1"
  ren !filename! !filename:-24px=lol!
)
The syntax of the command is incorrect.
batch-file cmd batch-rename
1个回答
1
投票

原因:ren目标仅是文件名-没有路径。语法:

REN [drive:][path]filename1 filename2

使用!filename!时,您的/R是完整路径。

解决方案:

使用%%~nxF获取filename.ext(请参阅for /?以了解有关这些修饰符的更多信息),并相应地更改ren语法:完整路径(源)为"%%F",目标为改编"!filename!"

@echo on
setlocal enableDelayedExpansion
for /r %%F in (*-24px*) do (
  set filename="%%~nxF"
  ren "%%F" "!filename:-24px=lol!"
)
© www.soinside.com 2019 - 2024. All rights reserved.