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

【已解决】十元求助批处理根据目录将内容图片放入目录文件

本帖最后由 胖来胖去 于 2019-10-14 00:16 编辑

根据目录将内容图片放入目录文件

假设一本书的目录,是
SS-2018-00001-0001
SS-2018-00001-0002
SS-2018-00001-0015
SS-2018-00001-0120
SS-2018-00001-0140
其中SS-2018-00001是书名称,后四位是书的目录
假设书一共150页,就会有150张图片
现已存在与目录同名的文件夹,需要将150张图片分别放入对应目录
文字直观描述就是
0001 图片放入SS-2018-00001-0001
0002-0014放入SS-2018-00001-0002
0015-0119放入SS-2018-00001-0015
0120-0139放入SS-2018-00001-0120
0140-0150放入SS-2018-00001-0140

每本书目录是不一样的
微信ff314951791

一点规律都没有,叫人家怎么作

TOP

回复 12# 胖来胖去
我这里测试了一下 正常的啊
不过刚刚发的代码 不严谨 修改了一下

TOP

  1. @echo off
  2. mode con lines=3000
  3. set info=互助互利,支付宝扫码头像,感谢打赏
  4. title %info%
  5. cd /d "%~dp0"
  6. >"%tmp%\t.t" echo;var list=WSH.StdIn.ReadAll().replace(/\s*$/,'').split(/[\r\n]+/);
  7. >>"%tmp%\t.t" echo;list.sort(function(a,b){return Number(b.replace(/^^.+-^|\.[^^\.]+$/g,''))-Number(a.replace(/^^.+-^|\.[^^\.]+$/g,''))});
  8. >>"%tmp%\t.t" echo;for(var i=0;i^<list.length;i++){WSH.echo(list[i]+'^|'+Number(list[i].replace(/^^.+-^|\.[^^\.]+$/g,'')));}
  9. for /f "tokens=1,2 delims=|" %%a in ('dir /ad/b *-*^|cscript -nologo -e:jscript "%tmp%\t.t"') do (
  10.     for /f "tokens=1,2 delims=|" %%c in ('dir /a-d/b *-*.jpg^|cscript -nologo -e:jscript "%tmp%\t.t"') do (
  11.         if %%d geq %%b (
  12.             echo;"%%c" --^> "%%a\"
  13.             move /y "%%c" "%%a\"
  14.         )
  15.     )
  16. )
  17. echo;%info%
  18. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 11# terse


    把图片都放进最后一个文件夹了

TOP

这样可以?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in ('dir /b /ad /on ss-*-*-*') do (
  3.      for /f "tokens=4 delims=-" %%b in ("%%a") do (
  4.           set /a f=1%%b,b=f-1
  5.            if not "!a!" == "" for /l %%c in (!a!,1,!b!) do (
  6.               set s=%%c
  7.               move !s:~1!.* !fs!
  8.            )
  9.      )
  10.      set a=!f!
  11.      set fs="%%a\"
  12. )
  13. set b=!a!
  14. for /f "tokens=*" %%a in ('dir /b /a-d /on *.* ^
  15. |findstr /irb "^[0-9][0-9][0-9][0-9]"') do if 1%%~na gtr !b! set b=1%%~na
  16. for /l %%c in (!a!,1,!b!) do set s=000%%c&move !s:~-4!.* !fs!
  17. pause
复制代码
回复 10# 胖来胖去

TOP

回复 7# terse


图片没按照要求胡乱放入了文件夹

TOP

回复 8# WHY


    好像没什么用

TOP

本帖最后由 WHY 于 2019-10-14 09:58 编辑
  1. $path = 'E:\Test\';
  2. $Hash = @{};
  3. dir ($path + '*-[0-9][0-9][0-9][0-9]') | ?{$_ -is [IO.DirectoryInfo]} | forEach{
  4.     $key = $_.Name.SubString($_.Name.Length-4, 4);
  5.     $Hash[$key] = $_.FullName;
  6. }
  7. dir ($path + '*.*') -Include '[0-9][0-9][0-9][0-9].jpg', '[0-9][0-9][0-9][0-9].bmp' | sort BaseName | forEach{
  8.     $name = $_.BaseName;
  9.     if( $Hash.ContainsKey($name) ){
  10.         $fd = $Hash[$name];
  11.     }
  12.     if( Test-Path Variable:fd ) {
  13.         move $_ -Dest ($fd + '\') -Force -WhatIf;
  14.     }
  15. }
  16. echo 'Done'
  17. [Console]::ReadKey();
复制代码
WhatIf: 对目标“项: E:\Test\0001.jpg 目标: E:\Test\SS-2018-00001-0001\0001.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0002.jpg 目标: E:\Test\SS-2018-00001-0002\0002.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0003.jpg 目标: E:\Test\SS-2018-00001-0002\0003.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0003.bmp 目标: E:\Test\SS-2018-00001-0002\0003.bmp”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0004.jpg 目标: E:\Test\SS-2018-00001-0002\0004.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0005.jpg 目标: E:\Test\SS-2018-00001-0002\0005.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0006.jpg 目标: E:\Test\SS-2018-00001-0002\0006.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0007.jpg 目标: E:\Test\SS-2018-00001-0002\0007.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0008.jpg 目标: E:\Test\SS-2018-00001-0002\0008.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0009.jpg 目标: E:\Test\SS-2018-00001-0002\0009.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0010.jpg 目标: E:\Test\SS-2018-00001-0002\0010.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0011.jpg 目标: E:\Test\SS-2018-00001-0002\0011.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0012.jpg 目标: E:\Test\SS-2018-00001-0002\0012.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0013.jpg 目标: E:\Test\SS-2018-00001-0002\0013.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0014.jpg 目标: E:\Test\SS-2018-00001-0002\0014.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0015.jpg 目标: E:\Test\SS-2018-00001-0015\0015.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0016.jpg 目标: E:\Test\SS-2018-00001-0015\0016.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0017.jpg 目标: E:\Test\SS-2018-00001-0015\0017.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0018.jpg 目标: E:\Test\SS-2018-00001-0015\0018.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0019.jpg 目标: E:\Test\SS-2018-00001-0015\0019.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0020.jpg 目标: E:\Test\SS-2018-00001-0015\0020.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0021.jpg 目标: E:\Test\SS-2018-00001-0015\0021.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0022.jpg 目标: E:\Test\SS-2018-00001-0015\0022.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0023.jpg 目标: E:\Test\SS-2018-00001-0015\0023.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0024.jpg 目标: E:\Test\SS-2018-00001-0015\0024.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0025.jpg 目标: E:\Test\SS-2018-00001-0015\0025.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0026.jpg 目标: E:\Test\SS-2018-00001-0015\0026.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0027.jpg 目标: E:\Test\SS-2018-00001-0015\0027.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0028.jpg 目标: E:\Test\SS-2018-00001-0015\0028.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0029.jpg 目标: E:\Test\SS-2018-00001-0015\0029.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0030.jpg 目标: E:\Test\SS-2018-00001-0015\0030.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0031.jpg 目标: E:\Test\SS-2018-00001-0015\0031.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0032.jpg 目标: E:\Test\SS-2018-00001-0015\0032.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0033.jpg 目标: E:\Test\SS-2018-00001-0015\0033.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0034.jpg 目标: E:\Test\SS-2018-00001-0015\0034.jpg”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\0035.jpg 目标: E:\Test\SS-2018-00001-0015\0035.jpg”执行操作“移动文件”。
...

TOP

回复 5# 胖来胖去
那再当前文件夹运行后什么情况呢

TOP

本帖最后由 ivor 于 2019-10-13 10:59 编辑

回复 1# 胖来胖去
和这个差不多http://www.bathome.net/thread-53959-1-1.html
  1. ls 'ss*' | group {[regex]::Match($_.Name,'[0-9]+(?=\.)')} | ForEach-Object{ mkdir $_.Name -ErrorAction Ignore;Move-Item -Path ($_.Group) -Destination $_.name}
复制代码

TOP

回复 4# terse


    没用,不会改,谢谢

TOP

没规律怎么帮  拿去自己改吧
  1. @echo off
  2. for /f "tokens=*" %%i in ('dir /b /a-d') do (
  3.      if "%%i" neq "%~0" (
  4.          md "%%~xi\" 2>nul
  5.          move "%%i" "%%~xi\"
  6. ))
  7. pause
复制代码

TOP

回复 2# zaqmlp


    第一次发,有点迷糊,可以站内私信我
实际操作大概就是按照文件名ss-2018-0001-0001横线的是后缀,按后缀分别放入图片
ss-2018-0001-0001放入图片0001
ss-2018-0001-0002放入图片0002-0003
ss-2018-0001-0004放入图片0004-0007
ss-2018-0001-0008放入图片0008-0010
ss-2018-0001-0011放入图片0011到结束

后缀没有规律
求大神帮忙

TOP

实际图片文件名是怎样的,每个文件夹放入图片数量的规律又是怎样的
你要留联系方式,留你的支付宝号干嘛
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

返回列表