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

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

有一个A文件夹,内有很多文件,比如csv和pdf文件。
有一个B.csv清单,内有时间,分类,文件名等内容。
希望将A文件夹内的文件符合条件的文件复制到C文件夹。
条件:清单内有的文件名。
谢谢各位大佬!!!

本帖最后由 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

TOP

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

您好,运行之后是这样的,文件名是第三列的那个,只比较文件名。

TOP

本帖最后由 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
复制代码

TOP

回复  G70
qixiaobin0715 发表于 2021-7-6 10:29



    您好,这个只创建了空的C文件夹,里面没有A文件夹里的文件

TOP

bat/csv/其它文件要在同一个文件夹下,bat、清单文件b.csv要存为ANSI编码。

TOP

回复 6# qixiaobin0715


    您好,如果需要A,B,C和bat都在同一个文件夹下要怎么实现呢?

TOP

回复 7# G70
代码测试有无问题?

TOP

回复 8# qixiaobin0715


    之前的测试代码可以在A文件夹内创建需要的文件,但是清单里没有的文件希望可以输出“不存在xxx文件”这句话。

TOP

回复 9# G70
已修改,未测试,是这样吗?

TOP

回复 10# qixiaobin0715


    A,B,C和bat在同一个文件夹下,但是没有输出“不存在文件”。

TOP

回复 11# G70
我这里测试没问题,代码修改了一下,将复制信息屏蔽掉。窗口不显示不存在文件吗?

TOP

回复 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”。谢谢您!!

TOP

本帖最后由 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

TOP

本帖最后由 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
复制代码

TOP

返回列表