我有一个文件夹,其格式为filename.com_XXX_IMG_000.jpg。问题出现是因为文件名中包含.com,它会混淆我用来将其上传到网站空间的软件。
我需要创建一个批处理文件来获取文件夹中的所有图像,并从filename.com_XXX_IMG_000.jpg =>重命名所有图像。 filename_XXX_IMG_000.jpg。
任何帮助都会很有意义,感谢提前。
答案 0 :(得分:1)
由于您希望在批处理文件中执行此操作:
@echo off
for /f "delims=. tokens=1,2,3" %%f in ('dir /b *.jpg') do (
setlocal enabledelayedexpansion
set part=%%g
if "!part:~0,3!"=="com" (
set oldname=%%f.%%g.%%h
set newname=%%f.!part:~4!.%%h
echo "!oldname!" -^> "!newname!"
ren "!oldname!" "!newname!"
)
endlocal
)
一些注意事项
for
循环变量是单个字母,如下所示:%f
%
必须进行转义,因此%f
变为%%f
delims=.
将.
的文件名拆分为三个部分tokens=1,2,3
返回包含各个名称部分的三个变量(%f
,%g
和%h
)enabledelayedexpansion
启用动态变量处理%foo:~0,3%
返回%foo%
的前三个字符。!
代替%
>
或echo
不会打印它,因此^>
答案 1 :(得分:1)
阅读HELP FOR
并尝试以下内容....
@echo off
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
set fn=%%~na
set fn=!fn:.com=!
echo REN "%%a" "!fn!.jpg"
)
您需要启用延迟扩展,因为您需要在for循环中展开变量。
循环遍历当前目录中的所有jpg文件,并且对于每个文件,它使用~n
语法提取其文件名,然后通过将其替换为.com
来删除它们的所有出现空字符串。阅读HELP SET
仔细测试后,删除echo
命令