Board logo

标题: [文件操作] 【已解决】批处理移动图片怎样根据文件名移动到不同的文件夹? [打印本页]

作者: k员外    时间: 2020-12-28 17:48     标题: 【已解决】批处理移动图片怎样根据文件名移动到不同的文件夹?

本帖最后由 k员外 于 2020-12-29 16:43 编辑

for /f "tokens=* delims=" %%i in ('dir /s /q /b *.png *.jpg *.gif') do move "%%i" ".\文件夹\指定子文件夹\"
因为图片是需要分开放入文件夹的,怎么指定图片重命名为A的移动到A子文件夹,图片重命名为B的图片移动到B子文件,最好是在一个根目录下所有的子文件夹同时进行这些命令。
作者: Batcher    时间: 2020-12-28 22:16

回复 1# k员外


    请举几个例子说明一下,移动之前在哪个目录,移动之后在哪个目录。
作者: qixiaobin0715    时间: 2020-12-28 22:49

我猜想你说的是当前文件夹,根目录应当指C: D:等
作者: k员外    时间: 2020-12-29 09:40

回复 2# Batcher


    移动之前甲文件夹下和a,b文件夹同级
作者: k员外    时间: 2020-12-29 09:50

回复 2# Batcher


    就是一个文件夹下有200个子文件夹,每个子文件夹里有图片重命名为ABC,def,123,456等图片,还有重命名为字母和数字的两个和图片同级的子文件夹,我需要abc,def的图片进入字母的文件夹,123,456的图片进入数字的文件夹。最好能200个文件夹同时进行
作者: qixiaobin0715    时间: 2020-12-29 10:40

回复 5# k员外
欧阳奋进!假设数字文件夹为A,字母文件夹为B。
  1. @echo off
  2. for /d %%a in (*) do (
  3.     for %%b in ("%%a"\*) do (
  4.         setlocal enabledelayedexpansion
  5.         set var=%%~nb
  6.         (echo !var:~0,1!|findstr "[0-9]"&&move "%%b" "%%a\A"||move "%%b" "%%a\B")>nul
  7.     )
  8. )
  9. pause
复制代码

作者: k员外    时间: 2020-12-29 11:28

回复 6# qixiaobin0715


    大佬,怎么判断图片名称的,我太菜了,看不太懂
作者: k员外    时间: 2020-12-29 11:31

回复 6# qixiaobin0715


    因为需要判断的其实全是汉字,怎么让它区分汉字
作者: qixiaobin0715    时间: 2020-12-29 13:04

回复 8# k员外
不是菜,不知道为什么总是说不到点子上,首层不知你在说什么,好不容易在5楼模模糊糊差不多,没想到又是顾左右而言他。你到底要表达的是什么意思,只有你自己知道。别人又如何帮到你呢?
作者: Batcher    时间: 2020-12-29 14:17

回复 8# k员外


    请给出几个真实的文件夹名、文件名,不要自己编名字了。
作者: k员外    时间: 2020-12-29 15:10

回复 10# Batcher


    在XXX村文件夹下有200个村里户主姓名命名的子文件夹,子文件夹里有图片若干和三个文件夹如下
    图片名称,身份证,户口簿,建设用地批准书,宗地基本信息表,界址标示表,界址签章表,宗地草图,调查审核表,界址说明表,界址点坐标表,房屋基本信息调查表,宗地图,房分层分户图
    文件名称,不动产来源证明,不动产权籍调查表,权利人户籍信息
   身份证,户口簿进入权利人户籍信息文件夹
   宗地基本信息表,界址标示表,界址签章表,宗地草图,调查审核表,界址说明表,界址点坐标表,房屋基本信息调查表,宗地图,房分层分户图进入不动产权籍调查表文件夹
   建设用地批准书进入不动产来源证明文件夹
作者: Batcher    时间: 2020-12-29 15:36

回复 11# k员外


测试代码之前请做好文件夹备份

请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. set "DstFolder1=权利人户籍信息"
  3. set "DstFolder2=不动产来源证明"
  4. set "DstFolder3=不动产权籍调查表"
  5. cd /d "%~dp0"
  6. for /d %%i in (*) do (
  7.     pushd "%%i"
  8.     for %%j in ("%DstFolder1%","%DstFolder2%","%DstFolder3%") do (
  9.         if not exist "%%j" (
  10.             md "%%j"
  11.         )
  12.     )
  13.     for /f "delims=" %%j in ('dir /b /a-d *身份证* *户口簿*') do (
  14.         move "%%j" "%DstFolder1%\"
  15.     )
  16.     for /f "delims=" %%j in ('dir /b /a-d *建设用地批准书*') do (
  17.         move "%%j" "%DstFolder2%\"
  18.     )
  19.     move "*.*" "%DstFolder3%\"
  20.     popd
  21. )
复制代码

作者: qixiaobin0715    时间: 2020-12-29 16:27

这样应当也行吧:
  1. @echo off
  2. set str=a身份证 a户口簿 b宗地基本信息表 b界址标示表 b界址签章表 b宗地草图 b调查审核表 b界址说明表 b界址点坐标表 b房屋基本信息调查表 b宗地图 b房分层分户图 c建设用地批准书
  3. setlocal enabledelayedexpansion
  4. for %%a in (%str%) do (
  5.     set n=%%a
  6.     set #!n:~1!=!n:~0,1!
  7. )
  8. for /d %%b in (*) do (
  9.     pushd "%%b"
  10.     for /f "delims=" %%c in ('dir /b /a-d') do (
  11.         if !#%%~na!==a move "%%c" "%%b\权利人户籍信息"
  12.         if !#%%~na!==b move "%%c" "%%b\不动产权籍调查表"
  13.         if !#%%~na!==c move "%%c" "%%b\不动产来源证明"
  14.     )
  15.     popd
  16. )
  17. pause
复制代码

作者: k员外    时间: 2020-12-29 16:27

本帖最后由 k员外 于 2020-12-29 16:28 编辑

回复 9# qixiaobin0715


    谢谢大佬
作者: k员外    时间: 2020-12-29 16:53

回复 12# Batcher


    感谢大佬
作者: qixiaobin0715    时间: 2020-12-30 14:48

受12楼代码启示可将13楼代码简化为:
  1. @echo off
  2. set str=a身份证 a户口簿 b建设用地批准书
  3. setlocal enabledelayedexpansion
  4. for %%a in (%str%) do (
  5.     set n=%%a
  6.     set #!n:~1!=!n:~0,1!
  7. )
  8. for /d %%b in (*) do (
  9.     pushd "%%b"
  10.     for /f "delims=" %%c in ('dir /b /a-d') do (
  11.         if !#%%~na!==a move "%%c" "%%b\权利人户籍信息"
  12.         if !#%%~na!==b move "%%c" "%%b\不动产来源证明"
  13.         if "!#%%~na!"=="" move "%%c" "%%b\不动产权籍调查表"
  14.     )
  15.     popd
  16. )
  17. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2