Board logo

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

作者: zxar520    时间: 2024-3-31 13:43     标题: 【已解决】创建目录和子目录的BAT代码请大佬修复一下,子目录无法创建

  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
作者: 77七    时间: 2024-3-31 15:21

  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
复制代码

作者: Five66    时间: 2024-3-31 15:33

注意完整语句范围内的语句可能需要
setlocal enabledelayedexpansion
作者: zxar520    时间: 2024-3-31 16:04

完美,非常感谢大佬!!!
作者: aloha20200628    时间: 2024-3-31 16:40


一楼代码中的如下句式(二楼代码中的第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
复制代码

作者: aloha20200628    时间: 2024-3-31 17:28

本帖最后由 aloha20200628 于 2024-3-31 17:30 编辑


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





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