File 使用批处理文件重命名文件夹中的多个图像
我有一个文件夹,里面的图片格式为filename.com\u XXX\u IMG\u 000.jpg。这个问题是因为文件名中有一个.com,它混淆了我用来上传到Web空间的软件 我需要创建一个批处理文件,获取文件夹中的所有图像,并从filename.com\u XXX\u IMG\u 000.jpg=>filename\u XXX\u IMG\u 000.jpg重命名所有图像File 使用批处理文件重命名文件夹中的多个图像,file,batch-file,dos,rename,File,Batch File,Dos,Rename,我有一个文件夹,里面的图片格式为filename.com\u XXX\u IMG\u 000.jpg。这个问题是因为文件名中有一个.com,它混淆了我用来上传到Web空间的软件 我需要创建一个批处理文件,获取文件夹中的所有图像,并从filename.com\u XXX\u IMG\u 000.jpg=>filename\u XXX\u IMG\u 000.jpg重命名所有图像 任何帮助都将非常有用,请提前感谢。因为您希望在批处理文件中执行此操作: @echo off for /f "delim
任何帮助都将非常有用,请提前感谢。因为您希望在批处理文件中执行此操作:
@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
^>
- 阅读更多关于
的帮助,然后尝试以下操作
@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
来删除所有出现的文件名。阅读帮助集
仔细测试后,删除echo
命令此操作有效,但会删除com,但不会删除filename.com之前的点。\u XXX=>filename.\u XXX。您将如何修改以删除圆点?@Chill如果您真的阅读了我的代码并眯起眼睛,您就会看到它。找到它设置为newname=%%f。!零件:~4.%h=>设置新名称=%%f!零件:~4.%h谢谢您的帮助此功能完成后,您将如何运行另一个批处理文件?@Chill与从命令行启动它的方式相同。谢谢您的方法,但我尝试过,但没有成功。我把批处理文件和图片放在同一个文件夹里,对吗?