批量把文件名1改成01

不要软件,要BAT语言,格式是JPG,且10.JPG不变,是为了排序。... 不要软件,要BAT语言,格式是JPG,且10.JPG不变,是为了排序。 展开
 我来答
splashchaos
2013-06-23 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3677万
展开全部

你没有明确说明其它具体的要求,比如是否包括子目录中的文件;文件名是否都是形如“abc1.jpg”这样的格式? 如果abc21.jpg这样的格式,是否就不替换了?


下面的文件保存到.bat或.cmd文件中,放到要处理的文件目录下。 测试通过后,把echo rename这句中的echo去除,即可运行(否则只是显示,但不执行);目前只查找形如“abc1.jpg”这样的文件,文件和目录可以有空格。

@echo off & setlocal enabledelayedexpansion

for /f "delims=" %%a in ('dir /s /b *1.jpg ^| findstr /r "[^0-9][0-9]\.jpg" 2^>nul') do (
@echo %%a
set file_name=%%~na
set last_char=!file_name:~-1!
set file_name=!file_name:~0,-1!
set file_path=%%~pa
set file_drive=%%~da
set file_ext=%%~xa
set file=!file_drive!!file_path!!file_name!0!last_char!!file_ext!
echo rename "%%~a" "!file!"
)

endlocal & @echo on
追问
包括子目录中的文件
文件名格式 C (1).jpg C (2).jpg ... C (10).jpg C (11).jpg
"C (1).jpg C (2).jpg .."的替换,而“C (10).jpg C (11).jpg。。。”的不换
主要是为了排序。01、02、03.。。。09、10、11.。。

好专业。。。学过VB吗?还是别的课程?
追答

修改后的代码如下, 适用于 xxxx(y).jpg这样的文件,其中(y)中的y是0~9的数字;同样可搜索当前目录及子目录下所有符合这个模式的文件名;同样测试通过后,把echo rename中的echo去除即可。

@echo off & setlocal enabledelayedexpansion

for /f "delims=" %%a in ('dir /s /b *.jpg ^| findstr /r "([0-9])\.jpg" 2^>nul') do (
set file_name=%%~na
set digit_char=!file_name:~-2,1!
for /f "delims=" %%i in ("!digit_char!") do set "file_name=!file_name:%%i=0%%i!"
set file_path=%%~pa
set file_drive=%%~da
set file_ext=%%~xa
set file=!file_drive!!file_path!!file_name!!file_ext!
echo rename "%%~a" "!file!"
)

endlocal & @echo on


又:VB吗? N久以前的事了,。。。。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式