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

[文件操作] 【已解决】批处理把5000个文件拆为4个为一组,放进序号增序新文件夹

本帖最后由 朱科技 于 2022-12-28 10:41 编辑

5000个文件拆为4个为一组,每组放进一个新的文件夹以序号增序命名,原来有提问过
数据排列示例:
1,2,4,6,6副本,7-副本,8,10

原来提取出现了问题:
   错误了提取1,2,4 (或者错误的提取1,10,11,12)

达到结果“按排列顺序”提取1,2,4,6
毕竟没有老师教,自学很痛苦的

回复 1# 朱科技


    请把上个帖子的链接发出来看看,以便修改之前的代码。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

假设源文件在C:\Users\Administrator\Desktop\test;批处理文件可在任意地方。
不知是不是这么个意思,效率应当不是太高。未测试:
  1. @echo off
  2. set "folder=C:\Users\Administrator\Desktop\test"
  3. set m=10000
  4. cd /d "%folder%"
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%i in ('dir /b /a-d ^|findstr /ev bat') do (
  7. set "var=%%i"
  8. for /f "tokens=* delims=0123456789" %%j in ("%%i") do (
  9. set /a "n=m+!var:%%j=!"
  10. set "-!n!=%%i"
  11. )
  12. )
  13. for /f "tokens=1* delims==" %%a in ('set -') do (
  14. set /a x+=1
  15. set /a "y=(x-1)/4+1"
  16. if not exist !y! md !y!
  17. move "%%b" "!y!"
  18. )
  19. pause
复制代码

TOP

文件名,前面部分是数字,数字按 [int] 排序,其他按字符排序
类似 [version]
  1. get-childitem -name | Sort-Object -Property { [version] $_ }
复制代码

TOP

Test.bat
  1. @echo off & setlocal enabledelayedexpansion
  2. if "%~1" NEQ "Arg" (
  3.     set n=0
  4.     for /f "tokens=1*" %%i in ('"%~f0" Arg ^| sort') do (
  5.         set /a m=n/4+1, n+=1
  6.         md !m! 2>nul
  7.         move "%%j" !m!\
  8.     )
  9.     pause & exit
  10. ) else (
  11.     for %%i in ( 0*,1*,2*,3*,4*,5*,6*,7*,8*,9* ) do (
  12.         set "s=%%i"
  13.         for /f "tokens=*delims=0123456789" %%j in ("%%i") do (
  14.             set "s=00000!s:%%j=!"
  15.         )
  16.         echo;!s:~-5! %%i
  17.     )
  18. )
复制代码

TOP

返回列表