背景 - 我正在整理,备份和存档我祖母的照片。我刚刚遇到一组文件夹,其中所有文件扩展名在末尾都有一些垃圾编号 (100_105.jpg_25_1025, 100_106.jpg_26_1026, ...)
我试图创建一个批处理程序来识别文件名部分,由句点(".")
分隔,然后从第二部分中删除任何将被定义为下划线{{1}的垃圾部分和之后的任何事情。
但是,我很早就遇到了障碍。我无法让程序吐出文件名的第二部分
这就是我发生的事情......
("_")
没有任何错误。绝对没有输出。我的回声看起来像这样......
for %%G in (*.jpg*) do (
for /f "tokens=* delims=." %%a in (%%G) do echo %%b)
如果我将G:\Project>(for /F "tokens=* delims=." %a in (100_0661.jpg_25_1026) do echo %b
替换为(%%G)
,则会提供" (100_0661.jpg_25_1026)
"的预期输出。
这有什么问题?这个问题有更好的解决方案吗?我知道几乎没有任何编程术语,所以请放轻松。
答案 0 :(得分:2)
从我所看到的,你不需要编写整个程序的脚本。尝试:
rename *.jpg* *.jpg
根据您的示例文件名100_105.jpg_25_1025
和100_106.jpg_26_1026
,您最终会得到100_105.jpg
和100_106.jpg
。
自DOS日以来,这种通配符替换一直是rename
经常被忽视的特征......
答案 1 :(得分:1)
for %%G in (*.jpg) do (
for /f "tokens=1* delims=." %%a in ("%%G") do echo %%b
)
在引号中设置%% G将其作为字符串处理。否则将尝试将%% G作为文本文件读取。
但是有更简单的方法来重命名图片。将此作为蝙蝠放在与图片相同的目录中(%% ~nG将图片扩展为其名称而不带扩展名):
@echo off
for %%G in (*.jpg_*_*) do (
ren "%%~nxG" "%%~nG.jpg"
)
它不会在子目录中搜索。并且只会处理应用掩码*.jpg_*_*
的文件。它也可以处理子文件夹,但在问题中没有提到。
答案 2 :(得分:0)
我推荐名为Rename Master的gui免费软件。它可以做你想要的事情以及更多,它提供了在运行之前结果的预览。