[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

  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. )
复制代码
1

评分人数

    • batman: 效率有问题PB + 2 技术 + 1

TOP

多谢0428_hai 大师的帮助

TOP

  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. )
复制代码
1

评分人数

    • batman: 通用性不高PB + 2 技术 + 1

TOP

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

TOP

5# wslqy


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

TOP

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

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

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

TOP

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

TOP

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

TOP

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

TOP

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

TOP

返回列表