用bat文件替换文件夹和子文件夹中的文件名
Replace file names in folders and subfolders with bat file
当我为一个文件夹执行此代码时(当我在 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-24px1"
ren !filename! !filename:-24px=lol!
)
The syntax of the command is incorrect.
原因:ren
目标只是文件名 - 没有路径。语法:
REN [drive:][path]filename1 filename2
当您使用 /R
时,您的 !filename!
是完整路径。
解决方法:
使用 %%~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!"
)
当我为一个文件夹执行此代码时(当我在 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-24px1"
ren !filename! !filename:-24px=lol!
)
The syntax of the command is incorrect.
原因:ren
目标只是文件名 - 没有路径。语法:
REN [drive:][path]filename1 filename2
当您使用 /R
时,您的 !filename!
是完整路径。
解决方法:
使用 %%~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!"
)