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

[文件操作] 批处理怎么把几千个文件夹每10文件夹移动分组?

[复制链接]
发表于 2022-10-10 15:58:42 | 显示全部楼层 |阅读模式
有几百个文件夹想归类,想要按顺序10个文件夹为一组移动到一个新的文件夹里,并取名“归类_01”、“归类_02”、“归类_03”...以此类推。请问该怎么写bat?
发表于 2022-10-10 16:42:57 | 显示全部楼层
将bat保存为ANSI编码:
  1. @echo off
  2. set n=10
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /ad') do (
  5.     set /a m=n/10
  6.     if !m! neq !x! (
  7.         set y=00!m!
  8.         set Folder=归类_!y:~-2!
  9.         md !Folder!
  10.     )
  11.     move "%%i" "!Folder!"
  12.     set /a n+=1
  13.     set /a x=m
  14. )
  15. pause
复制代码
代码未测试。
 楼主| 发表于 2022-10-11 09:23:08 | 显示全部楼层
回复 2# qixiaobin0715

't' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'tlocal' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'r' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
系统找不到指定的文件。
请按任意键继续. . .
发表于 2022-10-11 09:30:18 | 显示全部楼层
本帖最后由 xp3000 于 2022-10-11 10:41 编辑

两位数只能99个文件夹,其他不处理了?
  1. @echo off&setlocal enabledelayedexpansion
  2. set m=1
  3. (for %%a in (*.txt) do (
  4. set/a "n+=1,1/(10*m-n+1)"||(set/am+=1)
  5. md !m!&move "%%a" .\!m!\
  6. ))2>nul
复制代码
论坛代码,txt文件自行修改自己要处理的文件类型
发表于 2022-10-11 09:33:10 | 显示全部楼层
应当不会出现这样的问题啊,代码不要手打直接复制看看。
发表于 2022-10-11 10:24:01 | 显示全部楼层
本帖最后由 xp3000 于 2022-10-11 11:22 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set m=1
  3. (for %%a in (*.txt) do (
  4. set/a "n+=1,1/(10*m-n+1)"||(set/am+=1)
  5. if !m! lss 100 (set "x=0!m!" & set x=!x:~-2!) else (set "x=00!m!" & set x=!x:~-3!)
  6. md 归类_!x!&move "%%a" .\归类_!x!\
  7. ))2>nul
复制代码
要是不处理set "x=00!m!" & set x=!x:~-3!替换为exit /b
  1. @echo off&setlocal enabledelayedexpansion
  2. set m=1
  3. (@for /f "delims=" %%a in ('dir /b/a-d/on "*.txt"') do (
  4. set/a "n+=1,1/(1*m-n+1)"||(set/am+=1)
  5. if !m! geq 1000 (set "x=!m!") else (
  6. if !m! lss 100 (set "x=00!m!" & set x=!x:~-2!) else (set "x=00!m!" & set x=!x:~-3!)
  7. )
  8. md 归类_!x!&move "%%a" .\归类_!x!\
  9. ))2>nul
复制代码
再加个4位数以上的分组
发表于 2022-10-11 10:33:36 | 显示全部楼层
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. $a=Get-ChildItem |?{$_ -is [System.IO.DirectoryInfo]}
  7. $num=($a.Length-$a.Length%10)/10+1
  8. 1..$num |foreach {md 归类_$_}
  9. 0..($a.Length-1) |foreach {$b=($_-$_%10)/10+1;move $a[$_].FullName 归类_$b }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:48 , Processed in 0.018972 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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