Board logo

标题: [文件操作] 求助批处理匹配关键字+复制+输出语句 [打印本页]

作者: soykoa    时间: 2021-9-15 03:55     标题: 求助批处理匹配关键字+复制+输出语句

求帮助:
在网上找了2个代码,但组合不到一起,愁死人了
  1. cd /d E:\123\
  2. for /f "delims=" %%a in ('dir /a-d/s/b^|findstr /r "中国"') do xcopy  /d /y /e "%%a" "D:\456\"
复制代码
  1. @Tasklist|查找并复制成功&&Echo 已经复制包含关键字“中国”的文件||Echo ★★☆☆没有查到相关文件!☆☆★★
复制代码
主要想实现的功能是:在某个指定的文件夹里查找包含某个关键词的文件,然后复制到另一个文件夹,复制成功就打印:“已经复制包含关键字“中国”的文件”,,,如果没找到文件就打印:“没有查到相关文件!”

请大神们帮帮忙,谢谢!
作者: qixiaobin0715    时间: 2021-9-15 06:41

回复 1# soykoa
dir找不到文件会自动提示;
copy复制成功也会提示。
所以不需特意输出语句:
  1. @echo off
  2. cd /d E:\123
  3. for /f "delims=" %%a in ('dir /b /s /a-d *中国*') do copy "%%a" "D:\456"
  4. pause
复制代码

作者: hlzj88    时间: 2021-9-15 07:24

  1. @echo off&&setlocal enabledelayedexpansion
  2. set p=0
  3. cd /d E:\123\
  4. for /f "delims=" %%a in ('dir /a-d/b *') do findstr /r "中国" %%a&&set /a p+=1&&xcopy  /d /y /e "%%a" "D:\456\"
  5. if !p! geq 1 (echo 找到!p!个) else (echo 没有找到)
  6. pause
复制代码
没有经过严格测试。
作者: qixiaobin0715    时间: 2021-9-15 10:06

你说的关键词是在文件名中还是文件中?
作者: Fit    时间: 2021-9-15 10:24

去掉DIR  的/b 试试
作者: soykoa    时间: 2021-9-15 11:57

回复 4# qixiaobin0715


    是文件名,,,,在文件名中匹配关键字,查找文件,
作者: qixiaobin0715    时间: 2021-9-15 12:14

回复 6# soykoa
上面代码不行吗?
作者: qixiaobin0715    时间: 2021-9-15 12:20

不能用dir /s+findstr。如果路径文件夹中含有关键字也会被复制。
作者: soykoa    时间: 2021-9-15 12:34

回复 7# qixiaobin0715


    你的代码是对的,,,,测试过,,,,我主要是不想打印系统复制成功默认输出的结果,匹配的文件太多后,,,满屏全是“已复制       1个文件。”


想看看有没有什么办法,复制成功了,,,就打印A:共复制N个文件,,,没找到文件就打印B
作者: soykoa    时间: 2021-9-15 13:05

基本可以了,老师,,感谢,,,还有个小问题,,,如果我用xcopy  /d /y /e  每次都会提示复制13个文件,,,实际上是复制了13个吗?  xcopy /d,,,是增量复制,,,,文件我没有修改过,,,每次增量复制还是会提示搜索到的13个文件,,,他这里的“复制13个文件”,,,是说执行了13次吗?
作者: soykoa    时间: 2021-9-15 13:05

主要是需要增量复制
作者: qixiaobin0715    时间: 2021-9-15 14:34

回复 12# soykoa
没有研究过xcopy命令,不用for,直接复制不行吗:
  1. xcopy /d /y /e E:\123\*中国*.* D:\456
复制代码

作者: qixiaobin0715    时间: 2021-9-15 14:52

用for感觉是多此一举。
作者: qixiaobin0715    时间: 2021-9-15 15:41

回复 11# soykoa
还是要谢谢你,让我去认认真真的把xcopy命令研究了一番。
作者: soykoa    时间: 2021-9-15 16:24

直接用copy,,,全部要覆盖一次,,,,xcopy /d ,可以增量复制,,,没有修改过的文件,,日期相同,,就会忽略掉,不复制,,,挺方便的
作者: soykoa    时间: 2021-9-15 16:25

回复 12# qixiaobin0715

这样弄,每复制一个文件,就有一个提示,,,没有增量复制,还是有提示,,,文件多了后,,满屏全是提示
作者: qixiaobin0715    时间: 2021-9-15 16:37

回复 16# soykoa
已经加上参数/d,应当没问题啊。
那就在代码后面加上:>nul 屏蔽复制信息。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2