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

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

问个问题,一个文件夹里面有1---200左右的文本,1.txt,2.txt,5.txt......,如何按照顺序把没有的修改递补上:1.txt,2.txt,3.txt,也就是说,把5.txt的递修改为3.txt以此类推
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

18# else


只用DIR是不行,我的程序要+1000就是为了防止文件名读取错误
因为系统读数字文件名时是:1,10,11,12,13...19,2,20,21...的顺序,如果这些文件是有一定顺序的重要数据文件就会被全打乱了
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

已经结贴,谢谢大家的关注

TOP

本帖最后由 mxxcgzxxx 于 2011-7-17 17:37 编辑

测试可用,只修改文件名为纯数字的文件,别的无视
修正数字排序错误问题
只按数字改名不按修改时间
可更改 hz参数来改变后辍
允许最大文件名8999,如果有需要可以改第五句的1000成10000就可以允许89999
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set hz=txt
  4. for /f %%1 in ('dir /on /b * ^| findstr "^[0-9]*.%hz%$"') do (
  5.        set /a a=1000+%%~n1
  6.        set x!a!=%%1
  7.        )
  8. set a=1
  9. for /f "tokens=2 delims==" %%1 in ('set x') do (
  10.        ren %%1 !a!.%hz%
  11.        set /a a+=1
  12.        )
  13. echo 转换完成
  14. pause>nul  
复制代码
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

是的。
对于楼主的实际应用,看来用dir/o-d的排序效果就达到要求了。
我用于测试所创建的文本文件创建时间几乎全都一样吧,对于实际情况没有什么意义了。
只是对于这种“特殊情况”不适用罢了

TOP

13# 0428_hai
是因为你最小序号的文本文件的创建时间不是最早的~~~~
一路飘过的鸟~~~

TOP

如下图所示,不知为何我测试时,程序最后把编号编到242了,而我的txt文本只有50个啊

TOP

所有的问题已经解决,再次谢谢各位大师

TOP

2楼和9楼使用效果都一样,很好很不错

TOP

不是像我刚刚截图要的结果

TOP

  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. )
复制代码
一路飘过的鸟~~~

TOP

不好意思,无法把要的结果截图到这里面来,非常抱歉

TOP

不过还是要感谢大家对我的帮助,再次谢谢大家

TOP

5# wslqy


没看到你顶楼有这个需求啊

TOP

CUer 的代码文本名称是可以改变,但文本的时间属性被重新排列了

TOP

返回列表