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

[文本处理] [已解决]批处理如何把txt文本按照顺序把没有的修改递补上?

[复制链接]
发表于 2011-7-17 14:13:06 | 显示全部楼层 |阅读模式
问个问题,一个文件夹里面有1---200左右的文本,1.txt,2.txt,5.txt......,如何按照顺序把没有的修改递补上:1.txt,2.txt,3.txt,也就是说,把5.txt的递修改为3.txt以此类推

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-7-17 14:20:01 | 显示全部楼层

  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. ::本批处理功能为将当前文件夹下所有以阿拉伯数字命名的文本文件“按序”排列
  4. ::注意事项:当前文件夹中的文本文件名必须为阿拉伯数字,数字之间不允许空格
  5. ::当然可以根据自己的需求继续完善
  6. set max=1
  7. for %%a in (*.txt) do (
  8.         set %%~na=%%~na
  9.         if !max! lss %%~na set max=%%~na
  10.         set /a cnt+=1
  11. )

  12. for /l %%a in (1,1,%cnt%) do (
  13.         if defined %%a (
  14.                 set %%a=
  15.         ) else (
  16.                 set _tmp=%%a
  17.                 call :reName %%a
  18.         )
  19. )
  20. echo done......
  21. pause>nul
  22. exit

  23. :reName
  24. for /l %%a in (1,1,%max%) do (
  25.         set /a _tmp+=1
  26.         if defined !_tmp! (
  27.                 echo ren !_tmp!.txt %1.txt
  28.                 set !_tmp!=
  29.                 pause>nul
  30.                 goto :eof
  31.         )
  32. )
复制代码

评分

参与人数 1PB +2 技术 +1 收起 理由
batman + 2 + 1 效率有问题

查看全部评分

 楼主| 发表于 2011-7-17 14:21:00 | 显示全部楼层
多谢0428_hai 大师的帮助
发表于 2011-7-17 14:21:11 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set num=1000
  4. for /f %%a in ('dir /b *.txt') do (
  5.     set /a num+=1
  6.     ren %%a !num!.txt
  7. )
  8. for /f %%a in ('dir /b *.txt') do (
  9.     set /a newname=%%~na%%1000
  10.     ren %%a !newname!.txt
  11. )
复制代码

评分

参与人数 1PB +2 技术 +1 收起 理由
batman + 2 + 1 通用性不高

查看全部评分

 楼主| 发表于 2011-7-17 14:27:03 | 显示全部楼层
CUer 的代码文本名称是可以改变,但文本的时间属性被重新排列了
发表于 2011-7-17 14:30:23 | 显示全部楼层
5# wslqy


没看到你顶楼有这个需求啊
 楼主| 发表于 2011-7-17 14:31:00 | 显示全部楼层
不过还是要感谢大家对我的帮助,再次谢谢大家
 楼主| 发表于 2011-7-17 14:33:35 | 显示全部楼层
不好意思,无法把要的结果截图到这里面来,非常抱歉
发表于 2011-7-17 14:38:06 | 显示全部楼层

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For /F "delims=" %%i In ('Dir /od /b *.txt') Do (
  3.   If Not Defined Num (
  4.     Set /A Num=%%~ni
  5.     ) Else (
  6.     Set /A Num+=1
  7.     If !Num! NEQ %%~ni Ren %%i !Num!.txt
  8.   )
  9. )
复制代码
 楼主| 发表于 2011-7-17 14:42:16 | 显示全部楼层
不是像我刚刚截图要的结果
 楼主| 发表于 2011-7-17 14:45:44 | 显示全部楼层
2楼和9楼使用效果都一样,很好很不错
 楼主| 发表于 2011-7-17 14:54:31 | 显示全部楼层
所有的问题已经解决,再次谢谢各位大师
发表于 2011-7-17 14:57:14 | 显示全部楼层
如下图所示,不知为何我测试时,程序最后把编号编到242了,而我的txt文本只有50个啊
发表于 2011-7-17 15:15:37 | 显示全部楼层
13# 0428_hai
是因为你最小序号的文本文件的创建时间不是最早的~~~~
发表于 2011-7-17 15:49:25 | 显示全部楼层
是的。
对于楼主的实际应用,看来用dir/o-d的排序效果就达到要求了。
我用于测试所创建的文本文件创建时间几乎全都一样吧,对于实际情况没有什么意义了。
只是对于这种“特殊情况”不适用罢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 18:40 , Processed in 0.021433 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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