[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

批处理创建100个文件名不含5的文件夹

说明:题目出自随风

如题:
    创建100个文件夹,文件名不能含有5字.

  就是说创建100个文件夹.文件夹的名字中不能含有5字.
  而且必须是100个,不能多也不能少.
要求:
   代码越简洁越好.
   方法不限,高效,简洁为最佳答案.....

回复 59# 唯尘


    你可能看错题目了,5、15、25、等,都不能有。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1 1 111) do (
        set /a num=%%i %% 5
        if not "!num!"=="0" md %%i
)
pause

TOP

@echo off
for /l %%i in (1 1 101) do (
        if not "%%i"=="5" md %%i
)
pause>nul 2>&1

TOP

本帖最后由 wangqi0077 于 2011-5-26 16:10 编辑

看了下前面几楼的..直接用call后面加的不太懂,就改了一个自己懂的...
  1. for /l %%i in (2 1 100) do call:a
  2. :a
  3. md %random:5=%
复制代码
我是一个新手.看到此签名的请发点教程我!!谢谢!!

TOP

随机数这种你们用的我都不明白是什么意思,
for /l %%i in (1 1 100) do call md %%random:5=%%
随机数后面:5是什么意思呢?
只能想到最笨的,大家莫笑。。。。
  1. :0
  2. if %m% equ 101 goto 2
  3. set /a w=%random%
  4. echo %w%|find /i "5" >nul
  5. if %errorlevel% equ 0 (
  6. echo %w%此名含5
  7. goto 0 ) else (
  8. goto 1
  9. )
  10. :1
  11. dir /b |find /i "%w%" >unl
  12. if %errorlevel% equ 0 (
  13. echo 有重复文件名%w%
  14. goto 0 ) else (
  15. md !w!
  16. set /a m=m+1
  17. )
  18. goto 0
  19. :2
  20. echo creat success
  21. pause
  22. exit
复制代码

TOP

@echo off
for /l %%i in (1,1,100) do md %%i
pause

TOP

  1. for /l %%i in (60 1 109) do md %%i %%ia
复制代码


这样子的话 就又精简了一些

TOP

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
    set a=%%i
    set /a b=!a!%%10
    set /a c=!a!/10%%10
    if not b==5 if not c==5 md %%i
    if b==5 if c==5 set /a j=!a!+11 & md !j!m
    if not b==5 if c==5 set /a k=!a!+10 & md !k!m
    if b==5 if not c==5 set /a l=!a!+1 & md !l!m
    )
pause>nul

TOP

新人报到IP与MAC收集更新

这代码对比更新不行请指教

@echo off
if exist c:\mac.ini goto up
for /l %%a in (1,1,254) do ping 172.16.0.%%a -w 1 -n 1
PING 172.16.1.1 -w 3000 -n 1
for /f "skip=3 tokens=1,2 delims= " %%i in ('arp -a') do echo %%j              %%i >>c:\mac.ini
goto end
:up
for /l %%a in (1,1,254) do ping 172.16.0.%%a -w 1 -n 1
PING 172.16.1.1 -w 3000 -n 1
for /f "skip=3 tokens=1,2 delims= " %%d in ('arp -a') do find "%%d " c:\mac.ini||echo %%e              %%d >>c:\mac.ini

:end

TOP

在 37  楼的基础上再少两个字节。(31B)

  1. @set/aa+=1
  2. @md %a:5=a%&%a:~2%%0
复制代码

[ 本帖最后由 netbenton 于 2010-9-13 22:24 编辑 ]

TOP

回复 51楼 的帖子

前辈的想法确实很好啊,不过好像前辈没看其他前辈的答案吧,其他前辈的答案已经有您的这种算法了,现在楼主前辈寻找的是高效简洁复杂度最低的算法,所以这题确实难啊,等晚辈好好复习完数据结构后再试试吧,前辈您也要加油哦。

TOP

我的认为
随机一个数字
判断是否含有5
没有就建立该数字的文件夹
有就重新随机一个一个数字
语句执行100次


这样可以吗 谁知道这样怎么写代码,请教诸位大大

TOP

不知道文件名是否能长长的。。。

如果可以长长的可以用这个长长的代码:
  1. for /l %%i in (1,1,100) do call set d=%%d%%1&call md %%d%%
复制代码
如果不可以长长的可以用这个不长长的代码:
  1. for /l %%i in (1,1,100) do (
  2.     if %%i lss 50 (
  3.         call set d=%%d%%1&call md %%d%%
  4.     ) else (
  5.         call set e=%%e%%2&call md %%e%%
  6.     )
  7. )
复制代码
总之,办法总是会有的嘛。。。

TOP

@echo off
for /l %%i in (1 1 4) do (for /l %%j in (0 1 4) do (for

/l %%k in (0 1 4) do (md %%i%%j%%k)))
pause

TOP

返回列表