中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-26 16:51
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,276 会员排行
DOS批处理 & 脚本技术(批处理室) » 怎么利用批处理整批改不规则的文件名?
可打印版本  1,017 / 12
第1楼 wwhleo 发表于 2007-12-27 15:06
初级用户 发帖 10 积分 22
怎么利用批处理整批改不规则的文件名?
如果我有一批文件如下:1231343.jpg,2424252.jpg,6786832.jpg,2342342.jpg,3453453.jpg......
有一个name.txt文件中分别对应了1231343 刘一;2424252 王二;6786832 张三;2342342 李四;3453453 赵五......有没办法利用批处理将这些文件改名为刘一.jpg;王二.jpg;张三.jpg;李四.jpg;赵五.jpg......
哪位高人可以帮下忙,不胜感谢。

[ Last edited by wwhleo on 2007-12-27 at 03:11 PM ]
第2楼 huahua0919 发表于 2007-12-27 16:15
银牌会员 发帖 780 积分 1,608
放在当前目录下试试
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1*" %%i in (name.txt) do (
for %%c in (%%j) do (set a=%%c
echo !a! >>name1.txt
)
)
for /f "tokens=1,2 delims=;" %%i in (name1.txt) do (
ren "%%j.jpg" "%%i.jpg" 2>nul
del name1.txt /q 2>nul
)
pause

[ Last edited by huahua0919 on 2007-12-27 at 04:34 PM ]
第3楼 wwhleo 发表于 2007-12-27 16:31
初级用户 发帖 10 积分 22
试验了一下,虽然没效果,不过非常感激!!
第4楼 huahua0919 发表于 2007-12-27 16:34
银牌会员 发帖 780 积分 1,608
你的分割符有问题!
;
;
第5楼 terse 发表于 2007-12-27 23:48
银牌会员 发帖 946 积分 2,404
这样呢?

@echo off
for /f "tokens=1,* " %%i in (name.txt) do (
dir /b /a-d %%i.jpg >nul 2>nul&&ren "%%i.jpg" "%%j.jpg" 2>nul
)
pause


[ Last edited by terse on 2007-12-28 at 11:09 AM ]
第6楼 renzhen 发表于 2007-12-28 05:24
新手上路 发帖 5 积分 9
路过学习下!!!
第7楼 wwhleo 发表于 2007-12-28 09:10
初级用户 发帖 10 积分 22
路上的程序都试验了,没效果,郁闷了。分隔符也改为半角的了
第8楼 zh159 发表于 2007-12-28 10:26
金牌会员 发帖 1,467 积分 3,687
如果你的 name.txt 内容是:


感觉第三个效率最高,第二个效率稍低,第一个效率最差
这是测试,请自己修改 echo if exist 部分

一:


二:


简化第二个:


name.txt多行的不合适这三个

[ Last edited by zh159 on 2007-12-28 at 10:37 AM ]
第9楼 zh159 发表于 2007-12-28 10:41
金牌会员 发帖 1,467 积分 3,687
多行的试试这个:


第10楼 terse 发表于 2007-12-28 11:10
银牌会员 发帖 946 积分 2,404
原来把name.txt内容看成第一行 001 张三 第二行 002 李四


@echo off
for /f "delims=" %%i in (name.txt) do call :loop "%%i"
pause
goto :eof
:loop
for /f "tokens=1,2* delims=; " %%a in ("%~1") do (
if exist %%a.jpg ren %%a.jpg %%b.jpg
call :loop "%%c"
)


[ Last edited by terse on 2007-12-28 at 11:14 AM ]
第11楼 wwhleo 发表于 2007-12-29 12:04
初级用户 发帖 10 积分 22
郁闷,怎么文件名还是没修改掉,是不是要在纯DOS方式运行?
第12楼 zh159 发表于 2007-12-29 12:07
金牌会员 发帖 1,467 积分 3,687
Originally posted by wwhleo at 2007-12-29 12:04:
郁闷,怎么文件名还是没修改掉,是不是要在纯DOS方式运行?

我在 8 楼已经说了:
把 echo if exist 部分改为 if exist
8 楼是先给你测试
第13楼 wwhleo 发表于 2007-12-29 12:10
初级用户 发帖 10 积分 22
经过试验,10楼的大大的程序可以运行,非常感谢!也感谢各位大大的大力协助!!!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023