重命名命令 cmd 通配符问题

重命名命令 cmd 通配符问题

我有类似的文件

test_abc.html
haha_test_someword.js
haha_morehaha_test_continue_test.someextension

我想以递归方式将特定文件夹中的所有测试替换为 tommy。因此输出将变为:

 tommy_abc.html
    haha_tommy_someword.js
    haha_morehaha_tommy_continue_tommy.someextension

在 Windows 的命令提示符中使用 ren 命令可以实现这一点吗?

答案1

我不相信该ren命令可以自行完成您想要的操作,但使用批处理脚本ren可以。

回答了一个非常相似的问题昨天在 Stack Overflow 上。下面是该批处理脚本的修改版本,用于解决您的问题。它可以处理单个文件名中的多个替换:

setlocal ENABLEDELAYEDEXPANSION
set SEARCH_TEXT=test
set REPLACE_TEXT=tommy
for %%A in ("*%SEARCH_TEXT%*") do (
    set OLD_NAME=%%~nxA
    set NEW_NAME=!OLD_NAME:%SEARCH_TEXT%=%REPLACE_TEXT%!
    ren "!OLD_NAME!" "!NEW_NAME!"
)
endlocal

再次,可能需要阅读命令中的帮助文本SET /?才能理解这一点。

答案2

使用 for 循环进行递归重命名。使用通配符进行文本替换。

for /r %x in (*test*.*) do ren "%x" "*tommy*.*"

提示:如果运行一次命令不能替换所有“测试”,请多次运行该命令或使用另一个 for 循环。

如何在 ren 中使用通配符

递归ren

答案3

电源外壳

gci "C:\files" | ren -n {$_.Name -replace 'test','tommy'}

相关内容