Board logo

标题: [文件操作] [已解决]有多个文件夹 每个里面都有一些图片 要求批量剪切到一个文件夹 [打印本页]

作者: 001011    时间: 2011-12-20 22:10     标题: [已解决]有多个文件夹 每个里面都有一些图片 要求批量剪切到一个文件夹

本帖最后由 001011 于 2011-12-21 00:25 编辑

有多个文件夹  每个里面都有一些图片 要求批量剪切到一个文件夹  对这些图片集中处理  然后再还原到原来的文件夹里面
作者: 001011    时间: 2011-12-20 22:19

举例说明一下  我现在有1、2、3三个文件夹  每个里面都有10001.tif、10002.tif、10003.tif、10004.tif、10005.tif五张图片。全部剪切到A文件夹  图片名可以是1 10001.tif、1 10002.tif、1 10003.tif、1 10004.tif、1 10005.tif、2 10001.tif、2 10002.tif、2 10003.tif、2 10004.tif、2 10005.tif...........。然后我在A文件夹做图片处理。处理完了  再根据图片名空格前面的数字还原到原来的文件夹   图片名  固定是五位的1000**格式
作者: awk    时间: 2011-12-20 22:47

移动.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "C:\test"
  4. for /l %%a in (1,1,3) do (
  5.     for %%b in ("%%a\*.tif") do (
  6.         set "newname=%%b"
  7.         set "newname=!newname:\=_!"
  8.         move "%%b" "A\!newname!"
  9.     )
  10. )
复制代码

作者: awk    时间: 2011-12-20 22:49

还原.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "C:\test"
  4. for /f "tokens=1-2 delims=_" %%a in ('dir /b A\*.tif') do (
  5.     move "A\%%a_%%b" "%%a\%%b"
  6. )
复制代码

作者: 001011    时间: 2011-12-20 22:57

谢谢啦  你这个脚本是不是只能移动1、2、3这样的文件夹名呀  但是我们的文件夹名  不一定是1、2、3呀
作者: 001011    时间: 2011-12-20 23:00

而且 还不一定是顺号的
作者: awk    时间: 2011-12-20 23:01

回复 6# 001011


你咋不早说啊?
作者: 001011    时间: 2011-12-20 23:05

呵呵 抱歉了  麻烦您咯
作者: 001011    时间: 2011-12-20 23:10

本帖最后由 001011 于 2011-12-20 23:21 编辑

还是按路径取文件夹的名字吧  自动建立“A”文件夹 呵呵
作者: awk    时间: 2011-12-20 23:13

移动.bat
  1. @echo off
  2. set "src=C:\Test\处理前"
  3. set "dst=C:\Test\处理后"
  4. for /f "delims=" %%a in ('dir /b /ad %src%') do (
  5.     for %%b in ("%src%\%%a\*.tif") do (
  6.         move "%%b" "%dst%\%%a_%%~nxb"
  7.     )
  8. )
复制代码

作者: 001011    时间: 2011-12-20 23:35

我给了路径
  1. @echo off
  2. set "src=F:\佳美园20 21"
  3. set "dst=F:\A"
  4. for /f "delims=" %%a in ('dir /b /ad %src%') do (
  5.     for %%b in ("%src%\%%a\*.tif") do (
  6.         move "%%b" "%dst%\%%a_%%~nxb"
  7.     )
  8. )
复制代码

作者: 001011    时间: 2011-12-20 23:35

怎么不能剪切呢  移动和复制 是同一个BAT吗
作者: awk    时间: 2011-12-20 23:43

回复 11# 001011
  1. @echo off
  2. set "src=F:\佳美园20 21"
  3. set "dst=F:\A"
  4. for /f "delims=" %%a in ('dir /b /ad "%src%"') do (
  5.     for %%b in ("%src%\%%a\*.tif") do (
  6.         echo move "%%b" "%dst%\%%a_%%~nxb"
  7.     )
  8. )
  9. pause
复制代码
你运行这个,把结果给我看看。
作者: 001011    时间: 2011-12-20 23:48

提示  找不到文件   但是我发现造成错误的原因是 佳美园20 21  文件名中有个空格
作者: 001011    时间: 2011-12-20 23:50

删掉空格就没有问题了
作者: awk    时间: 2011-12-20 23:50

回复 14# 001011


像13楼那样给%src%加上双引号
作者: 001011    时间: 2011-12-20 23:53

不对呀  我把文件名的空格去掉以后运行脚本第二个脚本  只是看到BAT界面 把每张图都找到了  提示按任意键继续   但是图没有剪切过去  第一个脚本正常
作者: awk    时间: 2011-12-20 23:55

回复 17# 001011


第二个脚本是可以处理带空格的文件夹的
你把move前面的echo删掉就行了
作者: 001011    时间: 2011-12-20 23:58

OK  可以剪切了  还原呢  呵呵
作者: awk    时间: 2011-12-21 00:09

回复 19# 001011


还原.bat
  1. @echo off
  2. set "src=F:\佳美园20 21"
  3. set "dst=F:\A"
  4. for /f "tokens=1-2 delims=_" %%a in ('dir /b "%dst%\*.tif"') do (
  5.     move "%dst%\%%a_%%b" "%src%\%%a\%%b"
  6. )
复制代码

作者: 001011    时间: 2011-12-21 00:25

非常感谢  辛苦咯




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