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

[文件操作] 【已解决】批量自动创建文件夹并移动图片(感谢:Blitz、lifei259帮助)

本帖最后由 zxar520 于 2017-11-27 19:13 编辑

手上有一批图片,文件名是5-6位数字组成,有规律的,全部是以5或6位数字组成,再全部以s结尾的图片.
如:
10000s.jpg
10014s.jpg
100214s.jpg
54214s.jpg
......

第一步:
现在需要根据图片名的数字来创建相同名称的文件夹,并把图图移到该文件夹内。文件夹只保留数字,最后那个S去掉。

对应的就是:
10000/10000s.jpg  
10014/10014s.jpg  
100214/100214s.jpg  
54214/54214s.jpg
........

第二步:
再以这些目录为基础,创建一批目录,如5位数的创建前两位数字,6位的创建前三位数字

如:
10000->10  
10014->10   
100214->100   (这个是6位数的)
54214->54
然后再把对应的文件夹移到对应的目录中,

最后的结果是:

10/10000/10000s.jpg  
10/10014/10014s.jpg  
100/100214/100214s.jpg  
54/54214/54214s.jpg
........




请高手帮个忙,我自己写了一个,但是只能实现第一步,第二步怎么也无法实现...
下面附上我的第一步代码:


@echo off
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
    set "file=%%~na"
    md "!file:~,5!"
    move "!file:~,8!*" "!file:~,5!\"
)


这个是我抄别人的改的,不是我自己写的

在此先谢谢了!!!!

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%a in ('dir /b *.jpg') do (
  3. set wj=%%~na
  4. if "!wj:~5,1!" == "s" (md !wj:~0,2!\!wj:~0,-1!&&move "%%a" "!wj:~0,2!\!wj:~0,-1!") else md !wj:~0,3!\!wj:~0,-1!&&move "%%a" "!wj:~0,3!\!wj:~0,-1!"
  5. )
  6. pause
复制代码
2

评分人数

    • yhcfsr: 写得很简单明了,非常不错。技术 + 1
    • zxar520: 非常感谢, 可以使用,谢谢!技术 + 1

TOP

本帖最后由 lifei259 于 2017-11-28 15:45 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir/a-d/b,*s.jpg') do (
  4.     set "file=%%~na"
  5.     set file=!file:s=!
  6.   if !file! lss 100000 (
  7.     echo,md "!file:~0,2!\!file!"
  8.     echo,move "%%a" "!file:~0,2!\!file!"
  9.     ) else (
  10.     echo,md "!file:~0,3!\!file!"
  11.     echo,move "%%a" "!file:~0,3!\!file!")
  12. )
  13. pause
复制代码
放在和图片一个文件夹,如果能用去掉echo,
1

评分人数

    • zxar520: 感谢分享,非常感谢,可以使用!技术 + 1

TOP

非常感谢,可以使用。

TOP

返回列表