Board logo

标题: [文件操作] [已解决]批处理怎样按设定值生成指定数量的文件夹? [打印本页]

作者: yyb7618019    时间: 2011-3-26 10:59     标题: [已解决]批处理怎样按设定值生成指定数量的文件夹?

想运行后在目录生成指定数量的文件夹,命名从设定的开始值直到设定的数量
如:指定开始值为4567 ,数量为5,则生成5个文件夹,命名分别为:
“4567=22”
“4568=23”
“4569=24”
“4570=16”
“4571=17”
注:等号右边的值是前面每个数字的和:如4567=4+5+6+7=22

写了一小点,还没去处理文件名,循环建文件夹就出错了,语句:
  1. @echo off
  2. set /p start=起始数:
  3. set /p count=文件夹个数:
  4. set /a end=%start%+%count%-1
  5. for %%a in (%start% 1 %end%) do (
  6. set /a dirname=%start%+%%a
  7. echo %dirname%
  8. )
  9. pause
复制代码
好像循环do里面的set语句根本没生效,为什么呢?请好心人帮忙解答,谢谢
作者: yyb7618019    时间: 2011-3-26 11:13

谁帮我解答一下啊
作者: Undead    时间: 2011-3-26 11:35

  1. @echo off
  2. set /p start=起始数:
  3. set /p count=文件夹个数:
  4. set /a end=%start%+%count%-1
  5. for /l %%a in (%start% 1 %end%) do (
  6. echo %%a
  7. )
  8. pause
复制代码

作者: Batcher    时间: 2011-3-26 11:38

你接着改吧:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p start=起始数:
  4. set /p count=文件夹个数:
  5. set /a end=start+count-1
  6. for %%a in (%start% 1 %end%) do (
  7.     set /a dirname=start+%%a
  8.     echo,!dirname!
  9. )
  10. pause
复制代码

作者: batman    时间: 2011-3-26 12:00

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p start=起始数:
  3. set /p count=文件夹个数:
  4. set /a end=start+count-1
  5. for /l %%a in (%start%,1,%end%) do (
  6.      set "str=%%a"&set /a n=0
  7.      for /l %%a in (0,1,9) do if "!str:~%%a,1!" neq "" set /a n+=!str:~%%a,1!
  8.      md !n!
  9. )
  10. pause>nul
复制代码

作者: yyb7618019    时间: 2011-3-26 12:27

谢谢LS各位,可以实现建文件夹了,但如何算出数4455拆成: 4+4+5+5的值呢?
作者: batman    时间: 2011-3-26 12:54

6# yyb7618019
我五楼的代码难道没有计算值?你到底试了没有?
作者: yyb7618019    时间: 2011-3-26 13:41

6# yyb7618019
我五楼的代码难道没有计算值?你到底试了没有?
batman 发表于 2011-3-26 12:54



可以了,不愧是超级版主

最终结果:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p start=起始数:
  3. set /p count=文件夹个数:
  4. set /a end=start+count-1
  5. for /l %%a in (%start%,1,%end%) do (
  6.      set "str=%%a"
  7.      set /a n=0
  8.      for /l %%a in (0,1,9) do if "!str:~%%a,1!" neq "" set /a n+=!str:~%%a,1!
  9.      md "%%a=!n!"
  10. )
  11. pause>nul
复制代码

作者: tmplinshi    时间: 2011-3-26 17:08

本帖最后由 tmplinshi 于 2011-3-26 17:36 编辑
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. set /p n=起始数:
  4. set /p count=文件夹个数:
  5. for /l %%a in (1 1 %count%) do (
  6.     for /l %%d in (0 1 9) do set n=!n:%%d=+%%d!
  7.     set /a L = !n:+=!, R = 0 !n!, n = L + 1
  8.     md "!L!=!R!"
  9. )
  10. pause
复制代码





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