标题: [文件操作] 求助批处理将a文件夹内符合条件的文件复制到c文件夹,条件:清单内的文件名 [打印本页]
作者: G70 时间: 2021-7-5 17:54 标题: 求助批处理将a文件夹内符合条件的文件复制到c文件夹,条件:清单内的文件名
有一个A文件夹,内有很多文件,比如csv和pdf文件。
有一个B.csv清单,内有时间,分类,文件名等内容。
希望将A文件夹内的文件符合条件的文件复制到C文件夹。
条件:清单内有的文件名。
谢谢各位大佬!!!
作者: idwma 时间: 2021-7-5 18:07
本帖最后由 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
作者: G70 时间: 2021-7-6 09:56
回复 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 . . .
您好,运行之后是这样的,文件名是第三列的那个,只比较文件名。
作者: qixiaobin0715 时间: 2021-7-6 10:29
本帖最后由 qixiaobin0715 于 2021-7-6 16:57 编辑
回复 3# G70 - @echo off
- md C
- for /f "tokens=3 delims=," %%a in (b.csv) do if exist "A\%%a" (copy "A\%%a" "C\">nul) else echo,不存在文件:%%a
- pause
复制代码
作者: G70 时间: 2021-7-6 10:56
回复 G70
qixiaobin0715 发表于 2021-7-6 10:29
您好,这个只创建了空的C文件夹,里面没有A文件夹里的文件
作者: qixiaobin0715 时间: 2021-7-6 11:16
bat/csv/其它文件要在同一个文件夹下,bat、清单文件b.csv要存为ANSI编码。
作者: G70 时间: 2021-7-6 15:04
回复 6# qixiaobin0715
您好,如果需要A,B,C和bat都在同一个文件夹下要怎么实现呢?
作者: qixiaobin0715 时间: 2021-7-6 15:18
回复 7# G70
代码测试有无问题?
作者: G70 时间: 2021-7-6 15:29
回复 8# qixiaobin0715
之前的测试代码可以在A文件夹内创建需要的文件,但是清单里没有的文件希望可以输出“不存在xxx文件”这句话。
作者: qixiaobin0715 时间: 2021-7-6 15:57
回复 9# G70
已修改,未测试,是这样吗?
作者: G70 时间: 2021-7-6 16:30
回复 10# qixiaobin0715
A,B,C和bat在同一个文件夹下,但是没有输出“不存在文件”。
作者: qixiaobin0715 时间: 2021-7-6 17:01
回复 11# G70
我这里测试没问题,代码修改了一下,将复制信息屏蔽掉。窗口不显示不存在文件吗?
作者: G70 时间: 2021-7-6 17:12
回复 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”。谢谢您!!
作者: idwma 时间: 2021-7-6 19:07
本帖最后由 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
作者: qixiaobin0715 时间: 2021-7-6 20:30
本帖最后由 qixiaobin0715 于 2021-7-7 06:53 编辑
回复 13# G70 - @echo off
- md C
- for /f "tokens=3 delims=," %%a in (b.csv) do if exist "A\%%a" copy "A\%%a" "C\">nul
- echo,清单中没有列出的文件有:
- for %%i in (A\*) do if not exist "C\%%~nxi" echo,%%~nxi
- pause
复制代码
作者: G70 时间: 2021-7-7 15:26
回复 14# idwma
您好,请问输出一句话之后要怎么自动换行呢
作者: G70 时间: 2021-7-7 15:26
回复 15# qixiaobin0715
可以了!!谢谢您!!
作者: G70 时间: 2021-7-15 15:56
本帖最后由 G70 于 2021-7-15 16:05 编辑
回复 15# qixiaobin0715
您好,如果把b文件改成xlsx文件的话,这个代码应该怎么修改呢
作者: qixiaobin0715 时间: 2021-7-15 16:08
回复 18# G70
批处理只能处理文本文件。只能求助其它程序了。
作者: G70 时间: 2021-7-15 16:11
回复 19# qixiaobin0715
好的,谢谢!!
作者: G70 时间: 2021-7-15 16:28
回复 15# qixiaobin0715
请问,如果要输出复制文件的个数应该怎么处理?
作者: qixiaobin0715 时间: 2021-7-15 16:48
回复 21# G70 - @echo off
- md C
- setlocal enabledelayedexpansion
- for /f "tokens=3 delims=," %%a in (b.csv) do (
- if exist "A\%%a" (
- copy "A\%%a" "C\">nul
- set /a n+=1
- )
- )
- echo,共复制%n%个文件
- echo,清单中没有列出的文件有:
- for %%i in (A\*) do if not exist "C\%%~nxi" echo,%%~nxi
- pause
复制代码
作者: G70 时间: 2021-7-15 16:58
回复 22# qixiaobin0715
您好 %n%没有输出结果 只输出了“共复制个文件”
作者: G70 时间: 2021-7-15 17:04
回复 22# qixiaobin0715
解决了 谢谢您!
作者: qixiaobin0715 时间: 2021-7-15 17:08
那说明没有复制文件。你可把代码第6行中最后的>nul去掉再运行代码,看看到底复制文件没有。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |