当我对一个文件夹执行此代码时(当我在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.
答案 0 :(得分:2)
原因:ren
目标仅是文件名-没有路径。语法:
REN [drive:][path]filename1 filename2
使用!filename!
时,您的/R
是完整路径。
解决方案:
使用%%~nxF
获取filename.ext(请参阅for /?
以了解有关这些修饰符的更多信息),并相应地更改ren
语法:完整路径(源)应为{{ 1}},而目的地将是经过改编的"%%F"
:
"!filename!"