标题: 【已解决】十元求助批处理根据目录将内容图片放入目录文件 [打印本页]
作者: 胖来胖去 时间: 2019-10-12 22:31 标题: 【已解决】十元求助批处理根据目录将内容图片放入目录文件
本帖最后由 胖来胖去 于 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
作者: zaqmlp 时间: 2019-10-12 22:41
实际图片文件名是怎样的,每个文件夹放入图片数量的规律又是怎样的
你要留联系方式,留你的支付宝号干嘛
作者: 胖来胖去 时间: 2019-10-12 22:54
回复 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到结束
后缀没有规律
求大神帮忙
作者: terse 时间: 2019-10-12 23:02
没规律怎么帮 拿去自己改吧- @echo off
- for /f "tokens=*" %%i in ('dir /b /a-d') do (
- if "%%i" neq "%~0" (
- md "%%~xi\" 2>nul
- move "%%i" "%%~xi\"
- ))
- pause
复制代码
作者: 胖来胖去 时间: 2019-10-12 23:12
回复 4# terse
没用,不会改,谢谢
作者: ivor 时间: 2019-10-13 08:33
本帖最后由 ivor 于 2019-10-13 10:59 编辑
回复 1# 胖来胖去
和这个差不多http://www.bathome.net/thread-53959-1-1.html- ls 'ss*' | group {[regex]::Match($_.Name,'[0-9]+(?=\.)')} | ForEach-Object{ mkdir $_.Name -ErrorAction Ignore;Move-Item -Path ($_.Group) -Destination $_.name}
复制代码
作者: terse 时间: 2019-10-13 13:38
回复 5# 胖来胖去
那再当前文件夹运行后什么情况呢
作者: WHY 时间: 2019-10-13 15:46
本帖最后由 WHY 于 2019-10-14 09:58 编辑
- $path = 'E:\Test\';
- $Hash = @{};
-
- dir ($path + '*-[0-9][0-9][0-9][0-9]') | ?{$_ -is [IO.DirectoryInfo]} | forEach{
- $key = $_.Name.SubString($_.Name.Length-4, 4);
- $Hash[$key] = $_.FullName;
- }
-
- dir ($path + '*.*') -Include '[0-9][0-9][0-9][0-9].jpg', '[0-9][0-9][0-9][0-9].bmp' | sort BaseName | forEach{
- $name = $_.BaseName;
- if( $Hash.ContainsKey($name) ){
- $fd = $Hash[$name];
- }
- if( Test-Path Variable:fd ) {
- move $_ -Dest ($fd + '\') -Force -WhatIf;
- }
- }
-
- echo 'Done'
- [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”执行操作“移动文件”。
...
作者: 胖来胖去 时间: 2019-10-13 20:42
回复 8# WHY
好像没什么用
作者: 胖来胖去 时间: 2019-10-13 20:45
回复 7# terse
图片没按照要求胡乱放入了文件夹
作者: terse 时间: 2019-10-13 22:34
这样可以?- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in ('dir /b /ad /on ss-*-*-*') do (
- for /f "tokens=4 delims=-" %%b in ("%%a") do (
- set /a f=1%%b,b=f-1
- if not "!a!" == "" for /l %%c in (!a!,1,!b!) do (
- set s=%%c
- move !s:~1!.* !fs!
- )
- )
- set a=!f!
- set fs="%%a\"
- )
- set b=!a!
- for /f "tokens=*" %%a in ('dir /b /a-d /on *.* ^
- |findstr /irb "^[0-9][0-9][0-9][0-9]"') do if 1%%~na gtr !b! set b=1%%~na
- for /l %%c in (!a!,1,!b!) do set s=000%%c&move !s:~-4!.* !fs!
- pause
复制代码
回复 10# 胖来胖去
作者: 胖来胖去 时间: 2019-10-13 22:44
回复 11# terse
把图片都放进最后一个文件夹了
作者: zaqmlp 时间: 2019-10-13 23:42
- @echo off
- mode con lines=3000
- set info=互助互利,支付宝扫码头像,感谢打赏
- title %info%
- cd /d "%~dp0"
- >"%tmp%\t.t" echo;var list=WSH.StdIn.ReadAll().replace(/\s*$/,'').split(/[\r\n]+/);
- >>"%tmp%\t.t" echo;list.sort(function(a,b){return Number(b.replace(/^^.+-^|\.[^^\.]+$/g,''))-Number(a.replace(/^^.+-^|\.[^^\.]+$/g,''))});
- >>"%tmp%\t.t" echo;for(var i=0;i^<list.length;i++){WSH.echo(list[i]+'^|'+Number(list[i].replace(/^^.+-^|\.[^^\.]+$/g,'')));}
- for /f "tokens=1,2 delims=|" %%a in ('dir /ad/b *-*^|cscript -nologo -e:jscript "%tmp%\t.t"') do (
- for /f "tokens=1,2 delims=|" %%c in ('dir /a-d/b *-*.jpg^|cscript -nologo -e:jscript "%tmp%\t.t"') do (
- if %%d geq %%b (
- echo;"%%c" --^> "%%a\"
- move /y "%%c" "%%a\"
- )
- )
- )
- echo;%info%
- pause
复制代码
作者: terse 时间: 2019-10-14 00:16
回复 12# 胖来胖去
我这里测试了一下 正常的啊
不过刚刚发的代码 不严谨 修改了一下
作者: wxyz0001 时间: 2019-10-25 22:49
一点规律都没有,叫人家怎么作
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |