Board logo

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

作者: 朱科技    时间: 2021-6-7 14:27     标题: 【已解决】批处理把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
作者: Batcher    时间: 2021-6-7 21:27

回复 1# 朱科技


    请把上个帖子的链接发出来看看,以便修改之前的代码。
作者: qixiaobin0715    时间: 2021-6-7 21:33

假设源文件在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
复制代码

作者: newswan    时间: 2021-6-8 11:23

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

作者: WHY    时间: 2021-6-8 20:53

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





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