找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 74093|回复: 16

[文件操作] [已解决]批处理,将当前目录下所有满足条件的jpg、mp4文件,移动到某个文件夹里。

[复制链接]
发表于 2016-2-22 08:28:23 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2016-2-22 13:50 编辑

[已解决]批处理,将当前目录下所有满足条件的jpg、mp4文件,移动到某个文件夹里。

当前目录下,文件如果满足下面的条件,
就移动到当前目录下的某个文件夹里(名字是:zuk手机)

IMG_*_*.jpg(开头是IMG_,中间有_,扩展名是jpg)
Screenshot_*.jpg(开头是Screenshot_,扩展名是jpg)
VID_*.mp4(开头是VID_,扩展名是mp4)




比如
IMG_20151211_192725.jpg
IMG_20151216_153156.jpg
IMG_20151216_211727.jpg
IMG_20151229_170705.jpg
IMG_20160104_083240.jpg
IMG_20160116_183629.jpg
IMG_20160211_081017.jpg

Screenshot_2016-01-13-19-27-29.jpg
Screenshot_2016-01-16-17-24-16.jpg
Screenshot_2016-01-22-19-26-01.jpg

VID_20160119_104129.mp4
VID_20160124_101819.mp4
发表于 2016-2-22 10:16:40 | 显示全部楼层
@echo off
xcopy /c /s /y *.jpg  E:\test\
xcopy /c /s  /y *.mp4 E:\test\
pause
发表于 2016-2-22 10:39:51 | 显示全部楼层
本帖最后由 ivor 于 2016-2-22 10:43 编辑
  1. #!/usr/bin/env python
  2. # Python 3.5.1
  3. # coding:utf-8
  4. import os, re

  5. if not os.path.exists("zuk手机"):
  6.     os.mkdir("zuk手机")
  7. for file in os.listdir("."):
  8.     if file.endswith(".jpg") | file.endswith(".mp4"):
  9.         if file.startswith("IMG") | file.startswith("VID") | file.startswith("Screenshot"):
  10.             os.rename(file, "zuk手机//%s" % file)
复制代码
 楼主| 发表于 2016-2-22 11:30:33 | 显示全部楼层
ivor 发表于 2016-2-22 10:39



能否用bat代码直接完成。谢谢。
 楼主| 发表于 2016-2-22 11:33:35 | 显示全部楼层
ivor 发表于 2016-2-22 10:39


当前目录下,文件如果满足下面的条件,
就移动到当前目录下的某个文件夹里(名字是:zuk手机)

IMG_*_*.jpg(开头是IMG_,中间有_,扩展名是jpg)
Screenshot_*.jpg(开头是Screenshot_,扩展名是jpg)
VID_*.mp4(开头是VID_,扩展名是mp4)
发表于 2016-2-22 12:03:03 | 显示全部楼层
本帖最后由 ivor 于 2016-2-22 12:43 编辑

回复 5# ygqiang
  1. @echo off

  2. for /f "delims=" %%a in ('dir /b *.jpg *.mp4') do (
  3.         echo %%a | findstr /R "^IMG_.*_.*\.jpg" && move "%%a" ".\zuk手机\%%a"
  4.         echo %%a | findstr /R "^Screenshot_.*\.jpg" && move "%%a" ".\zuk手机\%%a"
  5.         echo %%a | findstr /R "^VID_.*\.mp4" && move "%%a" ".\zuk手机\%%a"
  6. )
  7. pause

复制代码
 楼主| 发表于 2016-2-22 12:25:43 | 显示全部楼层
回复 6# ivor


    findstr /R "^IMG_.*" && move "%%a" ".\zuk手机\%%a"

实验过了。这个代码不满足要求。
要求是:IMG_*_*.jpg(开头是IMG_,中间有_,扩展名是jpg)

如果有IMG_0103.JPG这种图片文件,不需要移动。
发表于 2016-2-22 12:42:12 | 显示全部楼层
回复 7# ygqiang


    我在6楼的代码已更新
 楼主| 发表于 2016-2-22 13:14:51 | 显示全部楼层
回复  ygqiang


    我在6楼的代码已更新
ivor 发表于 2016-2-22 12:42



    测试过了,好用。谢谢
 楼主| 发表于 2016-2-22 13:31:33 | 显示全部楼层
本帖最后由 ygqiang 于 2016-2-22 13:37 编辑
回复  ygqiang


    我在6楼的代码已更新
ivor 发表于 2016-2-22 12:42


多谢。请教另一个问题。。。
下面的代码,如果最终没有满足移动条件的文件,这样zuk手机目录下就是空的了。
如何修改代码,判断避免生成空的zuk手机文件夹?
(或者最后判断目录下没有文件就删除目录)
  1. @echo off

  2. echo 保存文件执行路径
  3. pushd "%~dp0"

  4. if not exist "d:\%date:~0,4%-%date:~5,2%" md "d:\%date:~0,4%-%date:~5,2%"
  5. if not exist "d:\%date:~0,4%-%date:~5,2%\zuk手机" md "d:\%date:~0,4%-%date:~5,2%\zuk手机"

  6. cd /d "d:\%date:~0,4%-%date:~5,2%"

  7. for /f "delims=" %%a in ('dir /b *.jpg *.mp4') do (
  8.         echo %%a | findstr /R "^IMG_.*_.*\.jpg" && move "%%a" ".\zuk手机\%%a"
  9.         echo %%a | findstr /R "^Screenshot_.*\.jpg" && move "%%a" ".\zuk手机\%%a"
  10.         echo %%a | findstr /R "^VID_.*\.mp4" && move "%%a" ".\zuk手机\%%a"
  11. )

  12. echo 恢复文件执行路径
  13. popd
  14. exit
复制代码
发表于 2016-2-22 13:41:29 | 显示全部楼层
  1. dir .\zuk手机  /b | findstr /r ".*" || rd .\zuk手机
复制代码
如果.\zuk手机 没有任何文件,删除文件夹
 楼主| 发表于 2016-2-22 13:49:55 | 显示全部楼层
最终代码。。。
  1. echo 保存文件执行路径
  2. pushd "%~dp0"


  3. if not exist "d:\%date:~0,4%-%date:~5,2%" md "d:\%date:~0,4%-%date:~5,2%"

  4. if not exist "d:\%date:~0,4%-%date:~5,2%\zuk手机" md "d:\%date:~0,4%-%date:~5,2%\zuk手机"

  5. cd /d "d:\%date:~0,4%-%date:~5,2%"

  6. for /f "delims=" %%a in ('dir /b *.jpg *.mp4') do (
  7.         echo %%a | findstr /R "^IMG_.*_.*\.jpg" && move "%%a" ".\zuk手机\%%a"
  8.         echo %%a | findstr /R "^Screenshot_.*\.jpg" && move "%%a" ".\zuk手机\%%a"
  9.         echo %%a | findstr /R "^VID_.*\.mp4" && move "%%a" ".\zuk手机\%%a"
  10. )

  11. dir .\zuk手机  /b | findstr /r ".*" || rd .\zuk手机


  12. echo 恢复文件执行路径
  13. popd

  14. exit
复制代码
 楼主| 发表于 2016-2-22 14:12:58 | 显示全部楼层
如果.\zuk手机 没有任何文件,删除文件夹
ivor 发表于 2016-2-22 13:41
  1.    
  2. for /f "delims=" %%a in ('dir /b *.*') do (
  3.          move "%%a" "C:\000\00-00\新建文件夹\%%a"
  4. )
复制代码

  1. for /f "delims=" %%a in ('dir /b *.*') do (
  2.          move "%%a" "C:\000\00-00\新建文件夹"
  3. )
复制代码
请问下,这2个代码,没啥差别吧?完全一样的效果?
发表于 2016-2-22 14:24:39 | 显示全部楼层
回复 13# ygqiang


    区别就是,第一个  可以更改文件名字,有时也会用move 当做rename使用
发表于 2016-2-22 19:06:29 | 显示全部楼层
通配符,不可以吗?

  1. md 某个文件夹 2>nul
  2. move IMG_*_*.jpg 某个文件夹\
  3. move Screenshot_*.jpg 某个文件夹\
  4. move VID_*.mp4 某个文件夹\
复制代码

评分

参与人数 1技术 +1 收起 理由
ivor + 1 666

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 01:42 , Processed in 0.022805 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表