windows - 批处理 ren 命令以保留文件扩展名并使用“。”容纳文件名
问题描述
我有一个脚本重命名文件,保持其文件扩展名如下:
ren path\one.* two.*
ren path\three.* four.*
这适用于上面没有“。”的文件名。但是,当我有一个名称为“does.not.work”的文件时。使用脚本:
ren path\does.not.work.* test.*
它会将其重命名为“test.not.work.EXT”。
ren 命令在别处自动生成以重命名大量不同的文件。所以手动将脚本更改为:
ren path\does.not.work.txt test.txt
是不切实际的。如何构建 ren 代码以容纳包含“.”的文件?
解决方案
使用 for 循环:
@echo off
for %%i in (does.not.work.*) do ren "%%~i" "test%%~xi"
显然,您可以使用单个 for 循环来为所有文件重命名实现此目的,有几种方法可以使用if
语句,这意味着您将在 for 循环中设置变量,这是一种利用方法findstr
和结果errorlevel
重命名根据它找到的内容,您需要对其进行微调,因为搜索su
也会匹配,sudo
因此请继续阅读findstr /?
以了解如何使用正则表达式或单词边界来获得准确的搜索结果:
@echo off
for %%i in (*) do (
echo %%~ni | findstr "one" && ren "%%~i" "two%%~xi"
echo %%~ni | findstr "three" && ren "%%~i" "four%%~xi"
echo %%~ni | findstr "does.not.work" && ren "%%~i" "test%%~xi"
)