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

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

本帖最后由 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

ivor 发表于 2016-2-22 10:39



能否用bat代码直接完成。谢谢。

TOP

ivor 发表于 2016-2-22 10:39


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

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

TOP

回复 6# ivor


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

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

如果有IMG_0103.JPG这种图片文件,不需要移动。

TOP

回复  ygqiang


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



    测试过了,好用。谢谢

TOP

本帖最后由 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
复制代码

TOP

最终代码。。。
  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
复制代码

TOP

如果.\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个代码,没啥差别吧?完全一样的效果?

TOP

通配符,不可以吗?
WHY 发表于 2016-2-22 19:06



    多谢。这个更简单、效率更高。。。

TOP

返回列表