Board logo

标题: [文本处理] 批处理如何根据Excel表格列出的文件与文件夹对应的关系将文件移动到相应文件夹里? [打印本页]

作者: michaelaa    时间: 2016-5-21 12:19     标题: 批处理如何根据Excel表格列出的文件与文件夹对应的关系将文件移动到相应文件夹里?

本帖最后由 pcl_test 于 2016-5-21 14:00 编辑

有一个文件夹ALL包含了所有文件,文件名以10001,10002........11000.PDF几千个文件,现在想将这些文件归档。
手上有一份清单Excel表,里面有信息归类如下:
10001.PDF     A
10002.PDF     B
10003.PDF     C
10004.PDF     A
10005.PDF     C
10006.PDF     C
10007.PDF     A
10008.PDF     C
10009.PDF     C
.
.
.

然后以A,B,C.....创建文件夹,将对应的PDF文件移动到文件夹里面。
假设所有的文件都在D盘,请老师指教如何操作,谢谢!
作者: michaelaa    时间: 2016-5-21 13:42

有老师帮帮我吗?
作者: /zhqsystem/zhq    时间: 2016-5-21 13:44

本帖最后由 /zhqsystem/zhq 于 2016-5-21 15:45 编辑

回复 1# michaelaa
文件超过1K过大不传了
红色区域,被论坛过滤改成空格了,无语
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type ".\all.txt"')do (
  3. set "name=%%i"
  4. set "name=!name:TAB标点手动写入=\!"
  5. for /f "delims=" %%j in ("\!name!")do (
  6.   if not exist "%~f1\%%~pj\" md "%~f1\%%~pj"
  7.   move,"%~f1\%%~nxj" "%~f1\%%~pj"
  8. )
  9. )
  10. pause
复制代码

文本格式[注意不是空格是TAB的键的标点,word本身复制出的列就是这个格式不需要改动]
ATAB标点10001.PDF
作者: michaelaa    时间: 2016-5-21 13:46

回复 3# /zhqsystem/zhq
请问是回答我的问题吗?
作者: /zhqsystem/zhq    时间: 2016-5-21 13:55

回复 4# michaelaa
3楼已更新,按错键好几次没编辑完就回,无语
作者: michaelaa    时间: 2016-5-21 14:02

回复 3# /zhqsystem/zhq
老师你好,谢谢你的回答,复制出来的文本,没有写入你的代码啊。
作者: michaelaa    时间: 2016-5-21 14:29

回复 3# /zhqsystem/zhq

老师是复制出这样子吗?然后怎么操作
A        10001.PDF
B        10002.PDF
C        10003.PDF
A        10004.PDF
C        10005.PDF
C        10006.PDF
A        10007.PDF
C        10008.PDF
C        10009.PDF
A        10010.PDF
B        10011.PDF
C        10012.PDF
A        10013.PDF
C        10014.PDF
C        10015.PDF
A        10016.PDF
C        10017.PDF
C        10018.PDF
A        10019.PDF
作者: /zhqsystem/zhq    时间: 2016-5-21 15:26

回复 7# michaelaa
代码处已更新附带说明,由于文件过大比代码字数多没有上传
作者: michaelaa    时间: 2016-5-21 16:08

回复 8# /zhqsystem/zhq

诶,还是不行,指定的路径无效。
作者: michaelaa    时间: 2016-5-21 16:18

回复 3# /zhqsystem/zhq

按照你的指点,做了两个文件,运行Bat,但是提示指定的路径无效。
作者: 回家路上    时间: 2016-5-21 16:39

  1. @echo off
  2. :: 放文件的目录
  3. set p=%~dp0FileCenter
  4. :: All.txt和脚本放一起
  5. for /f "tokens=1,* delims= " %%i in (All.txt) do (
  6. mkdir "%p%\%%i" 2>nul
  7. if exist "%p%\%%j" (
  8. move "%p%\%%j" "%p%\%%i"
  9. ) else echo;%%j文件不存在,请核对!
  10. )
  11. pause & exit /b
复制代码

作者: michaelaa    时间: 2016-5-21 18:07

回复 11# 回家路上

谢谢老师回复,但是还是不成功!返回文件不存在,请核对!
作者: /zhqsystem/zhq    时间: 2016-5-21 19:27

回复 10# michaelaa
取值拖拽是文件夹并非是文件也就是将all文件夹拖拽到批处理上,
all.txt要放在BAT的所在目录即可生效,
我的预想是不可能每次拖拽文件,上万个拖拽到猴年马月啊,一个文件夹全部搞定




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