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

[文件操作] 【已解决】创建目录和子目录的BAT代码请大佬修复一下,子目录无法创建

[复制链接]
发表于 2024-3-31 13:43:23 | 显示全部楼层 |阅读模式
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :: 设置父目录路径
  4. set "ParentDir=D:\Desktop\新建文件夹"

  5. :: 清除任何可能存在的旧目录
  6. rd /s /q "%ParentDir%\*" 2>nul

  7. :: 循环创建200个主目录,每个目录对应一个编号范围
  8. for /l %%i in (0,1,12) do (
  9.     :: 计算子目录编号的起始值
  10.     set /a "startNumber=%%i*1000"
  11.    
  12.     :: 创建主目录
  13.     mkdir "%ParentDir%\%%i" 2>nul
  14.    
  15.     :: 如果成功创建主目录,则进入该目录并创建子目录
  16.     if exist "%ParentDir%\%%i" (
  17.         cd /d "%ParentDir%\%%i"
  18.         
  19.         :: 在该目录下创建从startNumber到startNumber+999的子目录
  20.         for /l %%j in (%startNumber%,1,%startNumber%+999) do (
  21.             set "subdirName=%%j"
  22.             mkdir "!subdirName!" 2>nul
  23.         )
  24.         
  25.         :: 返回上一级目录
  26.         cd /d "%ParentDir%"
  27.     ) else (
  28.         echo 无法创建主目录 "%ParentDir%\%%i"
  29.     )
  30. )

  31. echo 创建完成。
  32. pause
复制代码
这一段无法创建子目录,请大佬修复一下,非常感谢!!!
需求:
0目录下从0~999
1目录下从1000~1999
...
10目录下从10001~10999
...
100目录下从100001~100999

评分

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

查看全部评分

发表于 2024-3-31 15:21:08 | 显示全部楼层
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. set "ParentDir=D:\新建文件夹"
  4. rd /s /q "%ParentDir%" 2>nul
  5. md "%ParentDir%"
  6. pushd "%ParentDir%"
  7. setlocal enabledelayedexpansion
  8. for /l %%l in (0,1,100) do (
  9.         set /a n=%%l*1000,m=n+999
  10.         for /l %%k in (!n!,1,!m!) do (
  11.                 md "%%l\%%k"
  12.         )
  13. )
  14. endlocal
  15. popd
  16. pause
复制代码

评分

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

查看全部评分

发表于 2024-3-31 15:33:42 | 显示全部楼层
注意完整语句范围内的语句可能需要
setlocal enabledelayedexpansion
 楼主| 发表于 2024-3-31 16:04:46 | 显示全部楼层
完美,非常感谢大佬!!!
发表于 2024-3-31 16:40:43 | 显示全部楼层

一楼代码中的如下句式(二楼代码中的第4行)
  1. rd /s /q "%ParentDir%\*" 2>nul
复制代码
会被系统报错,还是应改为下式为妥

  1. :: 清除任何可能存在的旧目录
  2. cd /d "%ParentDir%"
  3. (for /f "delims=" %d in ('dir/b/ad') do rd /s/q "%~d") 2>nul
复制代码
发表于 2024-3-31 17:28:05 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-3-31 17:30 编辑


也许习惯了 del *.* 句式的用法,但偏偏 rd 处理的目标目录拒绝通配符(详见 rd /?用法),不能连发只能点射 要想连发就得用 for 循环句式帮忙了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 03:28 , Processed in 0.017245 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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