Board logo

标题: [日期时间] [已解决]批处理如何把EXCEL文件根据文件名把文件剪切到不同的文件夹? [打印本页]

作者: flyhorse85    时间: 2011-8-4 09:06     标题: [已解决]批处理如何把EXCEL文件根据文件名把文件剪切到不同的文件夹?

EXCEL文件的名字都以“-”加站名命名,譬如:“杭州TD4期新建工程单站点验证报告—自由孔.xls”,“杭州TD4期新建工程单站点验证报告—自来水厂.xls”,“杭州TD4期新建工程单站点验证报告—紫京山庄.xls”
每个站名归属的县区如下:
站名      县市
自由孔    萧山
自来水厂  余杭
紫京山庄  西湖
竹海水韵  余杭
朱穴      临安
朱家塔    萧山
周杨村    余杭
要解决的问题是,自由孔归属是萧山,则把“杭州TD4期新建工程单站点验证报告—自由孔.xls”剪切到“萧山”的文件夹中。
求解!
作者: tmplinshi    时间: 2011-8-4 12:25

  1. @echo off
  2. for /f "tokens=1,2" %%a in (' more +8 "%~f0" ') do (
  3.     if not exist %%b md %%b
  4.     move *—%%a.xls %%b
  5. )
  6. exit /b
  7. :: ------------------
  8. 自由孔    萧山
  9. 自来水厂  余杭
  10. 紫京山庄  西湖
  11. 竹海水韵  余杭
  12. 朱穴      临安
  13. 朱家塔    萧山
  14. 周杨村    余杭
复制代码

作者: flyhorse85    时间: 2011-8-4 13:16

运行正常,非常感谢!
作者: flyhorse85    时间: 2011-8-4 13:24

本帖最后由 flyhorse85 于 2011-8-4 13:26 编辑

如果所属区域的名字不只是2个字呢,譬如说有2,3,4个字的,该如何提取呢?
tokens=1,2就无法实现了。
还有就是excel文件放在很多不同的文件夹,而且深度不同,是否一定要全部剪切到同一个文件夹?然后再执行代码。
作者: tmplinshi    时间: 2011-8-4 13:47

如果所属区域的名字不只是2个字呢
是指“站名”有空格,还是“区域”有空格?请像顶楼一样,举一些例子。

.
还有就是excel文件放在很多不同的文件夹
是在一个文件夹下的多个子文件夹,还是在不同的文件夹内?或者你希望搜索指定盘符,还是全盘搜索?
作者: flyhorse85    时间: 2011-8-4 14:22

县市名如下,就是有多于2个字,或者一些特殊字符,该怎么处理?
站名      县市
自由孔    萧&山
自来水厂  余 杭
紫京山庄  西湖区

excel文件是在一个文件夹下的多个子文件夹中。
作者: tmplinshi    时间: 2011-8-4 14:38

  1. @echo off
  2. for /f "tokens=1,*" %%a in (' more +8 "%~f0" ') do (
  3.     if not exist "%%b" md "%%b"
  4.     for /r %%i in (*—%%a.xls) do move "%%i" "%%b"
  5. )
  6. exit /b
  7. :: ------------------
  8. 自由孔    萧&山
  9. 自来水厂  余 杭
  10. 紫京山庄  西湖区
  11. 朱穴      临安
  12. 朱家塔    萧山
  13. 周杨村    余杭
复制代码

作者: zaixinxiangnian    时间: 2011-8-4 15:04

in ( ' more +8 "%~f0" ')括号里面的不明白,请问楼主哪里有关于这里面的解释
作者: tmplinshi    时间: 2011-8-4 15:30

in ( ' more +8 "%~f0" ')括号里面的不明白,请问楼主哪里有关于这里面的解释
zaixinxiangnian 发表于 2011-8-4 15:04



call /?
more /?
作者: flyhorse85    时间: 2011-8-9 10:00

more是8行以后
call是调用,就像goto一样
"%~f0"就不知道是啥意思了
作者: CUer    时间: 2011-8-9 12:04

回复 10# flyhorse85


批处理文件自身的完整路径




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