找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: 随风

[文件操作] 批处理将文件以数字重命名

[复制链接]
发表于 2008-6-15 16:55:35 | 显示全部楼层
这肯定要变的啊...

按照a.txt的顺序:

2.jpg 要改成 1.jpg
1.jpg 要改成 2.jpg
a.jpg 要改成 3.jpg
5ww.jpg 要改成 4.jpg
....

注意,原来的2.jpg不同现在的2.jpg了,因为根据a.txt,要改成1.jpg...依此类推
所以,结果就是对的了。不是么?
 楼主| 发表于 2008-6-15 16:58:56 | 显示全部楼层
好热闹,
我来说两句。
其实我们把a.txt的内容加上行号就可以很好的说明问题了
其实 梦想种子 的意思就是以行号重命名文件,18楼的代码也确实达到如此功效。
而more的意思好像是:
 以16个文件为例
  若有2.jpg则不能重命名2.jpg ..........
    若有10.jpg则不能重命名10.jpg ..........
    .....................
个人认为这种思路是最理想的。
发表于 2008-6-15 17:17:20 | 显示全部楼层
好热闹,
我来说两句。
其实我们把a.txt的内容加上行号就可以很好的说明问题了
其实 梦想种子 的意思就是以行号重命名文件,18楼的代码也确实达到如此功效。
而more的意思好像是:
 以16个文件为例
  若有2.jpg则不能重命名2.jpg ..........
    若有10.jpg则不能重命名10.jpg ..........
    .....................
个人认为这种思路是最理想的。


是的,我以为楼主的原意是这样的(虽然并不是),不过我的代码可达到了这个效果喔.
 楼主| 发表于 2008-6-15 18:47:36 | 显示全部楼层

33楼

呵呵。但是你的代码统计了文件总数,同样不合题意啊。
发表于 2008-6-15 20:21:52 | 显示全部楼层
我的有错误,改正了,不过以前的测试文件比较规则,所以可以运行。思路是和more的一样。
发表于 2008-6-15 20:22:45 | 显示全部楼层
哈哈,如果没有23楼的回复,我也不会贴出25楼的代码的,所以啊,正如我在22楼所说的,还没有符合题意的代码,依然在期待中........................
发表于 2008-6-15 21:53:56 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (a.txt) do (
  4. set /a n+=1
  5. call :check "%%i"
  6. )
  7. pause&exit
  8. :check
  9. if defined %~n1 (set /a n-=1&goto :eof)
  10. if exist !n!.jpg (
  11. set !n!=OK
  12. set /a n+=1
  13. goto check
  14. ) else (
  15. ren %1 !n!.jpg
  16. )
复制代码

评分

参与人数 1PB +2 收起 理由
more + 2 好极了

查看全部评分

 楼主| 发表于 2008-6-15 22:03:22 | 显示全部楼层
哈哈哈哈,37楼 和我的代码一模一样了。
哈哈。。。。
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do call :loop "%%a"
  3. pause
  4. :loop
  5. set /a n+=1
  6. if exist "%n%.jpg" set .%n%=a&goto loop
  7. if not defined .%~n1 ren "%~1" "%n%.jpg"&set .%n%=a
  8. goto :eof
复制代码
发表于 2008-6-15 22:49:27 | 显示全部楼层

回复 38楼 的帖子

你逻辑顺序比较好,所以简短很多。
发表于 2008-6-15 23:27:44 | 显示全部楼层
经测试37楼成功,38楼不成功,原因如下:
这是a.txt的部分内容:
2.jpg
1.jpg
a.jpg
5ww.jpg
c.jpg
当call :loop 2.jpg;当n加到4的时候出错,
if exist "4.jpg" set .4=a&goto loop   ==>这句不执行
if not defined .2 ren "%~1" "4.jpg"&set .4=a    ==>这句也不执行
goto :eof    ==>一直未定义.4
所以出错
 楼主| 发表于 2008-6-15 23:38:45 | 显示全部楼层
是啊,漏了一句。else set /a n-=1
:
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do call :loop "%%a"
  3. pause
  4. :loop
  5. set /a n+=1
  6. if exist "%n%.jpg" set .%n%=a&goto loop
  7. if not defined .%~n1 (ren "%~1" "%n%.jpg"&set .%n%=a) else set /a n-=1
  8. goto :eof
复制代码

评分

参与人数 2PB +4 收起 理由
梦想种子 + 2 最终的参考答案..
more + 2 精品

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 14:46 , Processed in 0.020454 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表