我有类似的文件
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 循环。
答案3
电源外壳
gci "C:\files" | ren -n {$_.Name -replace 'test','tommy'}