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

[文件操作] 批处理怎样把图片每4个提取放在一个文件夹?

本帖最后由 朱科技 于 2021-6-6 16:04 编辑

6月6日更新:
文件夹内有若干图片,按这些图片排列的先后顺序(不按扩展名)每4个提取放在一个文件夹,文件夹以1开始递增的顺序命名,如何实现啊
毕竟没有老师教,自学很痛苦的

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,* delims=:" %%a in ('dir /b/a-d/on *.jpg^|findstr /n .') do (set x=%%a)
  3. set m=1
  4. for /l %%i in (1 1 !x!) do (
  5. set/a "n+=1,1/(4*m-n+1)" 2>nul||(set/am+=1)
  6. md !m!&move "%%i.jpg" .\!m!\
  7. )
  8. pause
复制代码

TOP

回复 9# 朱科技
  1. powershell -c "Get-ChildItem *.jpg | Group-Object {[System.Math]::Ceiling($_.BaseName/4)} | foreach{$f = $_.Name;$_.Group | foreach {[void][System.IO.Directory]::CreateDirectory($f);$_.MoveTo($f + '\' + $_.Name)}}"
复制代码
1

评分人数

TOP

回复 2# xp3000


   如果我的文件名是1,2,3,4,5,6,7,8,9,10,提取4个一组时排列时候就错位了,成了(1,10,11,12),我想1,2,3,4这样提取4个一组
毕竟没有老师教,自学很痛苦的

TOP

回复 3# qixiaobin0715


    按排列顺序能行吗,不按扩展名
毕竟没有老师教,自学很痛苦的

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.jpg) do (
  4.     set /a n+=1
  5.     set /a "m=(n-1)/4+1"
  6.     if not exist !m! md !m!
  7.     move "%%a" "!m!"
  8. )
  9. pause
复制代码

TOP

  1. if %n%==4 ( set n=1 ) else ( set /a n+=1 )
复制代码

TOP

回复 1# 朱科技

这个批处理脚本还是很有实用性的。

TOP

回复 2# xp3000


    谢谢,实现了
毕竟没有老师教,自学很痛苦的

TOP

分组相对简单,顺序要复杂一些。按文件名、文件大小、时间、扩展名等。比如楼上代码是按扩展名的顺序来的

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set m=1
  3. (for %%a in (*.jpg *.png *.bmp) do (
  4. set/a "n+=1,1/(4*m-n+1)"||(set/am+=1)
  5. md !m!&move "%%a" .\!m!\
  6. ))2>nul
复制代码
论坛似乎很多分组的
1

评分人数

TOP

返回列表