[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
10楼测试过,代码虽然多,但都是for和if,不过也只能说比前面的快点。测试了几次,平均耗时0.03秒。
思路是将a.txt中 范围数字 之外的名称装进一个数组,再将剩余a.txt中没用过的数字装进一个数组,再一一对应重命名。

[ 本帖最后由 wankoilz 于 2008-6-10 23:32 编辑 ]

TOP

首先:效率仍是问题。
10 楼测试过吗?


代码绕的我好晕。。。

[ 本帖最后由 随风 于 2008-6-10 21:51 编辑 ]
技术问题请到论坛发帖求助!

TOP

再来一个,效率要比前两个要好:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%i in (a.txt) do (set/a n+=1&set .!n!=ok)
  3. for /f %%i in (a.txt) do (
  4.   if not defined .%%~ni (set/a n1+=1&set name!n1!=%%i
  5.   ) else (set .%%~ni=)
  6. )
  7. for /l %%i in (1,1,%n%) do (if defined .%%i (set/a n2+=1&set num!n2!=%%i))
  8. for /l %%i in (1,1,%n1%) do ren !name%%i! !num%%i!.jpg
复制代码

TOP

暂时没想出很简洁的方法,再思考思考..........

TOP

呵呵,强免完成任务。
两个版本的效率都非常的低。。









..
技术问题请到论坛发帖求助!

TOP

我有两个版本。第一个:
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do set/a n+=1
  3. for /f "delims=" %%i in (a.txt) do (
  4.   for /l %%j in (1,1,%n%) do if %%~ni equ %%j set .%%j=ok
  5. )
  6. for /f "delims=" %%i in (a.txt) do (
  7.   if not defined .%%~ni call :out %%i
  8. )
  9. pause
  10. :out
  11. for /l %%i in (1,1,%n%) do (if not defined .%%i (ren %1 %%i.jpg&set .%%i=ok&goto :eof))
复制代码
第二个更简单:
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do set/a n+=1
  3. for /f "delims=" %%i in (a.txt) do call :out %%i
  4. pause
  5. :out
  6. for /l %%i in (1,1,%n%) do (ren %1 %%i.jpg 2>nul&&goto :eof)
复制代码

TOP

呵呵,个人认为算投机。。
不过也不错,也是一个解决方法

[ 本帖最后由 随风 于 2008-6-11 16:53 编辑 ]
技术问题请到论坛发帖求助!

TOP

不知道以下代码是不是投机:
  1. @echo on
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. set n1=0
  5. for /f "tokens=*" %%a in (a.txt) do (
  6.      set /a n+=1
  7.      ren %%a t!n!.jpg
  8.     )
  9. :loop
  10. set /a n1+=1  
  11. ren t%n1%.jpg %n1%.jpg&&goto :loop
  12. exit
复制代码
1

评分人数

Welcome back to the world, grab a spoon - old friends

TOP

  随风 是担心重命名后文件名可能和现有文件名重名是吧?但是我始终没明白你"不能改变a.txt的顺序
"到底是什么意思:a.txt只是一个单独的文件,没看到它到底和谁排序呢?难道是不能改变a.txt文件内容的顺序?
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

a.txt中的内容其实就是当前文件夹下的jpg文件列表。
要求将当前文件夹里的所有jpg文件以序号的形式重命名。
但只能从 a.txt 获取当前文件夹里的所有 jpg 的文件名。
以序号重命名文件,陷阱重重,但如果用dir或for等命令来获取文件名的话,获取的先后次序会有一定规律,导致有些问题不能体现出来。
技术问题请到论坛发帖求助!

TOP

  没有看明白你的意思:是从a.txt中读取jpg文件名来重命名当前目录下的文件?a.txt只是一个单独的文件,如何有顺序一说?
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

返回列表