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

[文件操作] 【已解决】创建目录和子目录的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
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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

评分人数

bat小白,请多指教!谢谢!

TOP

注意完整语句范围内的语句可能需要
setlocal enabledelayedexpansion

TOP

完美,非常感谢大佬!!!

TOP


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

TOP

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


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

TOP

返回列表