找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 104596|回复: 40

[文件操作] [已解决]求助批处理根据清单创建文件夹并复制文件

[复制链接]
发表于 2023-6-16 21:27:58 | 显示全部楼层 |阅读模式
各位老师,我因为工作需要,有个需求是这样的,想根据一个清单(清单内有多个文件名例如 1.pdf, 2.pdf, 3.pdf ,4.pdf,5pdf  6.pdf)  和 多 个文件夹名  A, B,  C,
A 1.pdf  2.pdf
B 3.pdf  6.pdf
C 4pdf  5. pdf
1. 在当前目录下(C:\Users\Administrator\Desktop\test1\)创建清单内的多个文件夹。
2. 到指定目录下的文件夹(D:文件数据库)内复制和清单内的文件名的文件到刚创建的文件夹内,需要和清单内容是一一对应,例如:1.pdf,2pdf 复制到 A 文件夹内, 3.pdf  6.pdf  复制在B 文件夹内,  4.pdf  ,5pdf  复制到C 文件夹内
3  如果(D:文件数据库)内没有清单内的文件名,(假设: 6.pdf,  5.pdf 是不存在的) 需要创建一个复制不成功清单,包含不成功的文件名。
[img][/img]

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-6-16 21:33:04 | 显示全部楼层
回复 1# feiyan


    换个标题啦 一会batcher要过来扣分的
还有要求没看懂
发表于 2023-6-17 09:14:52 | 显示全部楼层
清单长啥样?

A 1.pdf 2.pdf
B 3.pdf

还是

[A]
1.pdf
2.pdf

[B]
3.pdf
发表于 2023-6-17 09:46:51 | 显示全部楼层
回复 1# feiyan


请把清单发出来看看,如果需要上传文件,可以用阿里云盘或百度网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
发表于 2023-6-17 19:41:16 | 显示全部楼层
文件夹和文件名是否含有空格?
 楼主| 发表于 2023-6-17 19:48:40 | 显示全部楼层
回复 5# 77七


    没有空格
 楼主| 发表于 2023-6-17 19:51:31 | 显示全部楼层
xi新人刚来,傻傻不懂,标题是有固定的要求和格式吗?
 楼主| 发表于 2023-6-17 19:52:36 | 显示全部楼层
已经上传截图了,还把表述不清楚的,重新编辑下
发表于 2023-6-17 20:04:00 | 显示全部楼层
本帖最后由 77七 于 2023-6-17 20:21 编辑
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "C:\Users\Administrator\Desktop\test1"
  4. for /f "delims=" %%a in ('type "1.txt"') do (
  5.         setlocal enabledelayedexpansion
  6.         for %%b in (%%a) do (
  7.                 if defined folder (
  8.                         if exist "D:\文件数据库\%%b" (
  9.                                 copy "D:\文件数据库\%%b" "!folder!"
  10.                         ) else (
  11.                                 >>log.txt echo %%b
  12.                         )
  13.                 ) else (
  14.                         set "folder=%%b"
  15.                         md "!folder!"
  16.                 )
  17.         )
  18.         endlocal
  19. )
  20. pause
复制代码

试试行吗

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2023-6-17 20:05:28 | 显示全部楼层
本帖最后由 yakeyun 于 2023-6-17 20:08 编辑

回复 1# feiyan

未测试,不知道是不是需要的。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. pushd "%~dp0"

  4. for /f "tokens=1-3" %%a in (1.txt) do (
  5.     md "%%a"
  6.     if exist "D:文件数据库\%%b" (
  7.         xcopy "D:文件数据库\%%b" ".\%%a" /f /y >nul
  8.     ) else (
  9.         echo 找不到指定文档:%%b ,拷贝到文件夹%%a中。 >>错误清单.log
  10.     )
  11.     if exist "D:文件数据库\%%c" (
  12.         xcopy "D:文件数据库\%%c" ".\%%a" /f /y >nul
  13.     ) else (
  14.         echo 找不到指定文档:%%c ,拷贝到文件夹%%a中。 >>错误清单.log
  15.     )
  16. )

  17. popd

  18. exit
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2023-6-18 09:01:12 | 显示全部楼层
批处理文件放在C:\Users\Administrator\Desktop\test1\目录下,并保存为ANSI编码:
  1. @echo off
  2. (for /f "tokens=1*" %%i in (1.txt) do (
  3.     md "%%i">nul 2>nul
  4.     for %%k in (%%j) do (
  5.         if exist "D:\文件数据库\%%k" (
  6.             copy "D:\文件数据库\%%k" "%%i">nul 2>nul
  7.         ) else (
  8.             echo,%%k
  9.         )
  10.     )
  11. ))>2.txt
  12. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-6-18 19:44:52 | 显示全部楼层
回复 9# 77七
系统显示找不到指定文件
 楼主| 发表于 2023-6-18 19:45:45 | 显示全部楼层
回复 11# qixiaobin0715

显示找不到文件
 楼主| 发表于 2023-6-18 19:48:25 | 显示全部楼层
回复 10# yakeyun
双击后无任何反应,我特地检查下,是完全copy 过来的
发表于 2023-6-18 20:40:09 | 显示全部楼层
9 10 11 楼的代码,是假设你的清单文件名为 1.txt,且和批处理文件在一起
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 12:13 , Processed in 0.027762 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表