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

[文件操作] 求助批处理将a文件夹内符合条件的文件复制到c文件夹,条件:清单内的文件名

[复制链接]
发表于 2021-7-5 17:54:34 | 显示全部楼层 |阅读模式
有一个A文件夹,内有很多文件,比如csv和pdf文件。
有一个B.csv清单,内有时间,分类,文件名等内容。
希望将A文件夹内的文件符合条件的文件复制到C文件夹。
条件:清单内有的文件名。
谢谢各位大佬!!!
发表于 2021-7-5 18:07:26 | 显示全部楼层
本帖最后由 idwma 于 2021-7-5 18:21 编辑

@echo off&setlocal enabledelayedexpansion
set a=d:\a\
set b=d:\b.csv
set c=d:\c\
for /f "delims=" %%i in ('dir/b !a!') do (
(type !b! | find /i "%%i") && copy "!a!%%i" "!c!"
)
pause
 楼主| 发表于 2021-7-6 09:56:59 | 显示全部楼层
回复 2# idwma


6/23/2021,Wednesday,New Bitmap Image.bmp,9:00-18:00,8,200
The system cannot find the file specified.
6/24/2021,Thursday,New Microsoft Excel Worksheet.xlsx,9:00-18:00,8,200
The system cannot find the file specified.
6/25/2021,Friday,New Microsoft Publisher Document.pub,9:00-18:00,8,200
The system cannot find the file specified.
7/1/2021,Thursday,New Text Document (2).txt,9:00-18:00,8,200
The system cannot find the file specified.
7/2/2021,Friday,New Text Document.txt,9:00-18:00,8,200
The system cannot find the file specified.
Press any key to continue . . .

您好,运行之后是这样的,文件名是第三列的那个,只比较文件名。
发表于 2021-7-6 10:29:36 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-7-6 16:57 编辑

回复 3# G70
  1. @echo off
  2. md C
  3. for /f "tokens=3 delims=," %%a in (b.csv) do if exist "A\%%a" (copy "A\%%a" "C">nul) else echo,不存在文件:%%a
  4. pause
复制代码
 楼主| 发表于 2021-7-6 10:56:46 | 显示全部楼层
回复  G70
qixiaobin0715 发表于 2021-7-6 10:29



    您好,这个只创建了空的C文件夹,里面没有A文件夹里的文件
发表于 2021-7-6 11:16:32 | 显示全部楼层
bat/csv/其它文件要在同一个文件夹下,bat、清单文件b.csv要存为ANSI编码。
 楼主| 发表于 2021-7-6 15:04:39 | 显示全部楼层
回复 6# qixiaobin0715


    您好,如果需要A,B,C和bat都在同一个文件夹下要怎么实现呢?
发表于 2021-7-6 15:18:51 | 显示全部楼层
回复 7# G70
代码测试有无问题?
 楼主| 发表于 2021-7-6 15:29:06 | 显示全部楼层
回复 8# qixiaobin0715


    之前的测试代码可以在A文件夹内创建需要的文件,但是清单里没有的文件希望可以输出“不存在xxx文件”这句话。
发表于 2021-7-6 15:57:40 | 显示全部楼层
回复 9# G70
已修改,未测试,是这样吗?
 楼主| 发表于 2021-7-6 16:30:29 | 显示全部楼层
回复 10# qixiaobin0715


    A,B,C和bat在同一个文件夹下,但是没有输出“不存在文件”。
发表于 2021-7-6 17:01:13 | 显示全部楼层
回复 11# G70
我这里测试没问题,代码修改了一下,将复制信息屏蔽掉。窗口不显示不存在文件吗?
 楼主| 发表于 2021-7-6 17:12:39 | 显示全部楼层
回复 12# qixiaobin0715


    您好,可能是我的需求没有讲明白。比如,A文件夹里有1.pdf,2.word,3.txt,4.csv,但是b的清单里只有1.pdf和4.csv的数据,希望C文件夹里复制1.pdf和4.csv两个文件,窗口显示“没有找到文件2.word”,“没有找到文件3.txt”。谢谢您!!
发表于 2021-7-6 19:07:21 | 显示全部楼层
本帖最后由 idwma 于 2021-7-6 19:15 编辑

@echo off&setlocal enabledelayedexpansion
set a=d:\a\
set b=d:\b.csv
set c=d:\c\
for /f "delims=" %%i in ('dir/b/s !a!') do (
find /i "%%~nxi" %b% >nul && copy "%%i" "!c!" >nul || set /p=""没有找到文件%%i"," <nul
)
pause
发表于 2021-7-6 20:30:18 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-7-7 06:53 编辑

回复 13# G70
  1. @echo off
  2. md C
  3. for /f "tokens=3 delims=," %%a in (b.csv) do if exist "A\%%a" copy "A\%%a" "C">nul
  4. echo,清单中没有列出的文件有:
  5. for %%i in (A\*) do if not exist "C\%%~nxi" echo,%%~nxi
  6. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 20:08 , Processed in 0.034062 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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