Board logo

标题: [文件操作] [已解决]BAT脚本如何批量新建文件夹并使之有规律的命名 [打印本页]

作者: impk    时间: 2019-7-22 16:58     标题: [已解决]BAT脚本如何批量新建文件夹并使之有规律的命名

如何批量建立一百个文件夹
并自动命名为Vol_001-Vol_100
其中文件名前缀Vol_为固定
后缀的起始数值可以设定,总新建数可以设定
作者: zaqmlp    时间: 2019-7-22 17:49

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. set "前缀=Vol_"
  7. set "起始数=1"
  8. set "总数=100"
  9. set "位数=3"
  10. set /a "n=0,m=100000000"
  11. :create
  12. set /a t=m+%起始数%+n
  13. setlocal enabledelayedexpansion
  14. if not exist "!前缀!!t:~-%位数%!" (md "!前缀!!t:~-%位数%!")
  15. endlocal
  16. set /a n+=1
  17. if %n% geq %总数% (goto end)
  18. goto create
  19. :end
  20. echo;%info%
  21. pause
复制代码

作者: impk    时间: 2019-7-22 17:51

回复 2# zaqmlp


    这个脚本完美解决问题,谢谢大佬
作者: zaqmlp    时间: 2019-7-22 18:00

回复 3# impk

那就赞助下吧
作者: impk    时间: 2019-7-22 18:03

回复 4# zaqmlp


    无业穷屌丝,赞助您点小黄本子行么?
作者: zaqmlp    时间: 2019-7-22 18:09

回复 5# impk

这没用呀
作者: impk    时间: 2019-7-25 15:35

本帖最后由 impk 于 2019-8-31 15:33 编辑

看了好多教程才搞明白
  1. @echo off
  2. set 前缀=Vol_
  3. set 起始数=1
  4. set 执行数=100
  5. set 位数=3
  6. set 计数器=0
  7. set 补零器=100000000
  8. :create
  9. set /a 总数=%补零器%+%起始数%+%计数器%
  10. setlocal enabledelayedexpansion
  11. md "%前缀%!总数:~-%位数%!"
  12. endlocal
  13. set /a 计数器=%计数器%+1
  14. if %计数器% geq %执行数% ( goto :end ) else ( goto :create )
  15. :end
复制代码

作者: impk    时间: 2019-8-31 15:32

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in ( 1,1,100 ) do (
  4. set /a n1=100000000
  5. set /a n2=!n1!+%%i
  6. md Vol_!n2:~-3!
  7. )
  8. pause
复制代码

作者: terse    时间: 2019-8-31 19:19

  1. for /l %%i in ( 1001,1,1100 ) do ...
复制代码

作者: impk    时间: 2019-8-31 21:42

本帖最后由 impk 于 2019-8-31 21:47 编辑

回复 9# terse

好思路,可精减到两行代码,不会再短了
  1. @echo off & setlocal enabledelayedexpansion
  2. for /l %%i in ( 1001,1,1100 ) do ( set /a n=%%i && md Vol_!n:~-3! )
复制代码

作者: jave000    时间: 2022-3-4 11:22

本帖最后由 jave000 于 2022-3-4 11:32 编辑

回复 10# impk


    您好,我按照我的需求改写成了如下
@echo off & setlocal enabledelayedexpansion
for /l %%i in (1,1,50) do ( set /a n=%%i && md "W !n:~-3! T")

请问一下,如何使其每次双击只生成一个文件夹,且新文件夹会查看该目录内序号到了多少,生成下一个序号。
如果我目录下已经有1-20这二十个文件夹,现在我要双击生成21,下一次双击再生成22


thx
作者: qixiaobin0715    时间: 2022-3-4 11:51

未知!n:~-3!有何作用。
下面代码是不是和你楼上等效呢?
  1. for /l %%i in (1,1,50) do md "W %%i T"
复制代码

作者: qixiaobin0715    时间: 2022-3-4 12:03

回复 11# jave000
  1. set n=0
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do if !n! lss %%i set n=%%i
  4. set /a n+=1
  5. md !n!
复制代码

作者: jave000    时间: 2022-3-4 12:51

本帖最后由 jave000 于 2022-3-4 12:57 编辑

回复 13# qixiaobin0715


    我是抄楼上的,运行良好我也没细看,我在另一处求助如何获取今天的本年第几周,搜了论坛只有一个帖子涉及,而且没有具体代码。
我这个创建文件夹的序号,其实对应的是本周是第几周,所以不能让它无限创建下去,最多只能到第五十多周。
n+=1也没看懂,而且生成到2就不能继续了
作者: qixiaobin0715    时间: 2022-3-4 13:34

回复 14# jave000
我这里测试没发现问题。看看这个是否能帮到你:https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2