[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

@echo off
xcopy /c /s /y *.jpg  E:\test\
xcopy /c /s  /y *.mp4 E:\test\
pause

TOP

本帖最后由 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)
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

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

本帖最后由 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
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 6# ivor


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

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

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

TOP

回复 7# ygqiang


    我在6楼的代码已更新
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

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. dir .\zuk手机  /b | findstr /r ".*" || rd .\zuk手机
复制代码
如果.\zuk手机 没有任何文件,删除文件夹
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&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

回复 13# ygqiang


    区别就是,第一个  可以更改文件名字,有时也会用move 当做rename使用
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

通配符,不可以吗?
  1. md 某个文件夹 2>nul
  2. move IMG_*_*.jpg 某个文件夹\
  3. move Screenshot_*.jpg 某个文件夹\
  4. move VID_*.mp4 某个文件夹\
复制代码
1

评分人数

TOP

返回列表