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

[文本处理] [已解决]批处理批量建立以数字命名的文本如何在文件名的数字前补零?

[复制链接]
发表于 2011-5-13 11:18:10 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-6 22:47 编辑

是这样的,我需要建立100个文本,那利用FOR就可以解决了。

  1. for /l %%i in (1,1,100) do echo.>%%i.txt
复制代码
现在问题是建立的文件前10个都是1.txt 2.txt 3.txt等,而我实际需要的却是01 02 03。
各种办法都想了,一直做不到。
希望各位大大指教

评分

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

查看全部评分

发表于 2011-5-13 11:43:23 | 显示全部楼层
楼主可否列举下你所想的各种办法?
发表于 2011-5-13 11:55:58 | 显示全部楼层

  1. for /l %%i in (1,1,9) do echo.>0%%i.txt
  2. for /l %%i in {10 1 100) do echo.>%%i.txt
复制代码
发表于 2011-5-13 12:12:00 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1001,1,1100) do (
  3.      set "str=%%a"
  4.      cd.>!str:~1!.txt
  5. )
复制代码
 楼主| 发表于 2011-5-13 12:26:53 | 显示全部楼层
本帖最后由 Bearxy 于 2011-5-13 12:28 编辑

3# wolonga123

这种办法我也试了.只怪我问题没说清楚,文件是本身存在的,我想用FOR来取文件名.

文件是01 02 03 04 05 06.txt
  1. FOR /L %%i in (1,1,100) do (xcopy "%%i.txt" "c:\%%i")
复制代码
但是实际上%%i的前9个值都是 1 2 3 4 5 6 7 8 9,而不是01 02 03....
两条代码是可以做到,是否有办法可以直接实现?

我记得看到很多例子,建立文本文档的,都是01 02 03 等等这样的.所以才有此一问.
 楼主| 发表于 2011-5-13 12:29:18 | 显示全部楼层
4# batman
batman老大的代码也是一样,到9后面的值就为 010 011 012...  了。
发表于 2011-5-13 12:41:39 | 显示全部楼层
本帖最后由 mxxcgzxxx 于 2011-5-13 20:35 编辑

  1. @echo off&setlocal enabledelayedexpansion
  2. set p=0
  3. set /p a=起始文号,请用数字!:
  4. set /p b=终止文号,请用数字!:
  5. set /p c=文件后辍:四位以内的字符
  6. set /p d=需要补0的位数?如001为3,0001为4!:
  7. set /p e=你想什么前辍吗?:
  8. for /l  %%1 in (%a%,1,%b%) do (
  9.        call :补0 %%1 %d%
  10.        echo !dat!
  11.        cd.>!dat!.%c%
  12.        )
  13. echo :eof

  14. :补0
  15. :test
  16. set "var=%1"
  17. set len=0
  18. for /l %%x in (0,1,20) do (
  19.    set "var_=!var:~%%x,1!"
  20.    if "!var_!"=="" goto :b
  21.    set /a len+=1
  22.    )
  23. :b
  24. set /a kg=%2-%len%
  25. set "dat="
  26. if %kg% leq 0 set dat=%1 & goto :eof
  27. for /l %%x in (1,1,%kg%) do set "dat=!dat!%p%"
  28. set "dat=!e!!dat!%1"
  29. goto :eof
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-5-13 12:51:57 | 显示全部楼层
7# mxxcgzxxx
谢谢大大,测试的时候出现了一个此时不应有...我没看清楚.

这种思路,是不是用ren更快些?
比如

  1. @echo off
  2. set a=0
  3. :ks
  4. set/a a=%a%+1
  5. ren "%a%.txt" "0%a%.txt"
  6. if %a%==9 goto ok
  7. goto ks

  8. :ok
  9. echo 完成!
  10. pause
复制代码
发表于 2011-5-13 13:00:30 | 显示全部楼层
5# Bearxy
纯属抄袭斑竹的..^-^

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1001,1,1100) do (
  3.      set "str=%%a"
  4.      cd.>!str:~-2!.txt
  5. )
复制代码
发表于 2011-5-13 13:05:27 | 显示全部楼层
本帖最后由 wolonga123 于 2011-5-13 13:13 编辑

这样好像也行..不过思路差不多

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,100) do (
  3.      set "str=0%%a"
  4.      cd.>!str:~-2!.txt
  5. )
  6. pause
复制代码
发表于 2011-5-13 14:20:22 | 显示全部楼层
10# wolonga123


迭代范围是1-99
发表于 2011-5-13 15:28:41 | 显示全部楼层
8# Bearxy

对不起因为是在论坛里写的没有测试过,现在改正了一些语法错误可以用了!你再试试
 楼主| 发表于 2011-5-13 17:27:06 | 显示全部楼层
本帖最后由 Bearxy 于 2011-5-13 17:29 编辑

12# mxxcgzxxx


测试完全OK,谢谢mxxcgzxxx! 也很感激bathome和其他几位的热心帮助!
发表于 2011-5-13 17:34:15 | 显示全部楼层
直接把前面几个文件改名就行了……
发表于 2011-5-13 20:31:26 | 显示全部楼层
改改程序还可以加个前辍,比如:文件001.txt,文件002.txt

最前面加句 set /p e=您的文件需要加什么前辍?

最后子程序那赋值那改成 set "dat=!e!!dat!%1"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 07:21 , Processed in 0.038902 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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