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

时间:2019-10-02 09:33:47

标签: batch-file cmd batch-rename

当我对一个文件夹执行此代码时(当我在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.

1 个答案:

答案 0 :(得分:2)

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

REN [drive:][path]filename1 filename2

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

解决方案:

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

"!filename!"