[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何根据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盘,请老师指教如何操作,谢谢!
1

评分人数

有老师帮帮我吗?

TOP

本帖最后由 /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
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 3# /zhqsystem/zhq
请问是回答我的问题吗?

TOP

回复 4# michaelaa
3楼已更新,按错键好几次没编辑完就回,无语
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 3# /zhqsystem/zhq
老师你好,谢谢你的回答,复制出来的文本,没有写入你的代码啊。

TOP

回复 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
1

评分人数

    • pcl_test: 样本、举例要适当、适量PB -4

TOP

回复 7# michaelaa
代码处已更新附带说明,由于文件过大比代码字数多没有上传
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 8# /zhqsystem/zhq

诶,还是不行,指定的路径无效。

TOP

回复 3# /zhqsystem/zhq

按照你的指点,做了两个文件,运行Bat,但是提示指定的路径无效。

TOP

  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
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 11# 回家路上

谢谢老师回复,但是还是不成功!返回文件不存在,请核对!

TOP

回复 10# michaelaa
取值拖拽是文件夹并非是文件也就是将all文件夹拖拽到批处理上,
all.txt要放在BAT的所在目录即可生效,
我的预想是不可能每次拖拽文件,上万个拖拽到猴年马月啊,一个文件夹全部搞定
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

返回列表