标题: [文件操作] [已解决]批处理怎样按设定值生成指定数量的文件夹? [打印本页]
作者: 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
写了一小点,还没去处理文件名,循环建文件夹就出错了,语句:- @echo off
- set /p start=起始数:
- set /p count=文件夹个数:
- set /a end=%start%+%count%-1
- for %%a in (%start% 1 %end%) do (
- set /a dirname=%start%+%%a
- echo %dirname%
- )
- pause
复制代码
好像循环do里面的set语句根本没生效,为什么呢?请好心人帮忙解答,谢谢
作者: yyb7618019 时间: 2011-3-26 11:13
谁帮我解答一下啊
作者: Undead 时间: 2011-3-26 11:35
- @echo off
- set /p start=起始数:
- set /p count=文件夹个数:
- set /a end=%start%+%count%-1
- for /l %%a in (%start% 1 %end%) do (
- echo %%a
- )
- pause
复制代码
作者: Batcher 时间: 2011-3-26 11:38
你接着改吧:- @echo off
- setlocal enabledelayedexpansion
- set /p start=起始数:
- set /p count=文件夹个数:
- set /a end=start+count-1
- for %%a in (%start% 1 %end%) do (
- set /a dirname=start+%%a
- echo,!dirname!
- )
- pause
复制代码
作者: batman 时间: 2011-3-26 12:00
- @echo off&setlocal enabledelayedexpansion
- set /p start=起始数:
- set /p count=文件夹个数:
- set /a end=start+count-1
- for /l %%a in (%start%,1,%end%) do (
- set "str=%%a"&set /a n=0
- for /l %%a in (0,1,9) do if "!str:~%%a,1!" neq "" set /a n+=!str:~%%a,1!
- md !n!
- )
- 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
可以了,不愧是超级版主
最终结果:- @echo off&setlocal enabledelayedexpansion
- set /p start=起始数:
- set /p count=文件夹个数:
- set /a end=start+count-1
- for /l %%a in (%start%,1,%end%) do (
- set "str=%%a"
- set /a n=0
- for /l %%a in (0,1,9) do if "!str:~%%a,1!" neq "" set /a n+=!str:~%%a,1!
- md "%%a=!n!"
- )
- pause>nul
复制代码
作者: tmplinshi 时间: 2011-3-26 17:08
本帖最后由 tmplinshi 于 2011-3-26 17:36 编辑
- @echo off
- SetLocal EnableDelayedExpansion
- set /p n=起始数:
- set /p count=文件夹个数:
- for /l %%a in (1 1 %count%) do (
- for /l %%d in (0 1 9) do set n=!n:%%d=+%%d!
- set /a L = !n:+=!, R = 0 !n!, n = L + 1
- md "!L!=!R!"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |