![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 08:14 |
共 48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求助:有关多级路径文件重命名问题,卡在变量使用 |
| 可打印版本 753 / 5 |
| 第1楼 lsh1611 | 发表于 2007-11-01 17:24 |
| 初级用户 发帖 27 积分 80 来自 BJ | |
|
求助:有关多级路径文件重命名问题,卡在变量使用 有这样的列表文件:list.txt
E4333A0ED8189CD2A35CF9F5E3CE4E4C E:\!MD5-Test\collection\V\xgt9h1.dll FE4E944898E2D8F54C44EC5469AF21FE E:\!MD5-Test\collection\V\zxdoor0.dll 6A69C2CF90D56940CF8C44FD2AFA9109 E:\!MD5-Test\collection\V\yywf\ccaj.ini 69CC5AC465F4C973A5360C8403399193 E:\!MD5-Test\collection\V\yywf\eecl.dll 前面是文件md5,后面是全路经文件名(路径深度不定)。 要将所列文件名改为:md5(原文件)。 坛子上查了若干贴,制作如下: for /f "tokens=1*" %%a in (list.txt) do ( set "patch1=%%b" call :GetFdName "%%b" ren %%patch1 %%a(%%b) ) :GetFdName for /f "delims=\ tokens=1,*" %%i in ("%~1") do ( if "%%j"=="" echo %%i & goto :eof call :GetFdName "%%j" ) 目前总是变量pathch1的值不对,patch1是临时存放全路经文件名的。不知哪里错误,可能是低级错误。有劳哪位帮忙看看! [ Last edited by lsh1611 on 2007-11-1 at 05:26 PM ] |
|
| 第2楼 abcd | 发表于 2007-11-01 17:36 |
| 银牌会员 发帖 739 积分 1,436 | |
| 第3楼 lsh1611 | 发表于 2007-11-01 18:04 |
| 初级用户 发帖 27 积分 80 来自 BJ | |
Originally posted by abcd at 2007-11-1 05:36 PM: 感激+佩服,有点小错误: for /f "tokens=1*" %%i in (list.txt) do ( ren "%%j" "%%i(%%~nj)%%~xi" ) 但改名后,后缀名不见了... %%~n 和 %%~X 一直没明白什么意思。 |
|
| 第4楼 abcd | 发表于 2007-11-01 18:06 |
| 银牌会员 发帖 739 积分 1,436 | |
|
不好意思,手误了
把变量%%j写成了%%i了,再测试一下? |
|
| 第5楼 lsh1611 | 发表于 2007-11-02 09:39 |
| 初级用户 发帖 27 积分 80 来自 BJ | |
|
的确可以了!再次感谢。
明白了%%~n %%~x的含义。 最终代码: for /f "tokens=1*" %%a in (list.txt) do ren "%%b" "%%a(%%~nb%%~xb) 但对于包含空格的文件则会改名失败。一直对这种情况比较头疼。 [ Last edited by lsh1611 on 2007-11-2 at 09:46 AM ] |
|
| 第6楼 abcd | 发表于 2007-11-02 10:25 |
| 银牌会员 发帖 739 积分 1,436 | |
|
如楼主这样,不是连扩展名都改了??
包含空格的文件用引号引上就可以了 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |