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

[文件操作] 求助批处理匹配关键字+复制+输出语句

求帮助:
在网上找了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 ★★☆☆没有查到相关文件!☆☆★★
复制代码
主要想实现的功能是:在某个指定的文件夹里查找包含某个关键词的文件,然后复制到另一个文件夹,复制成功就打印:“已经复制包含关键字“中国”的文件”,,,如果没找到文件就打印:“没有查到相关文件!”

请大神们帮帮忙,谢谢!

回复 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
复制代码

TOP

  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
复制代码
没有经过严格测试。
目的,学习批处理

TOP

你说的关键词是在文件名中还是文件中?

TOP

去掉DIR  的/b 试试

TOP

回复 4# qixiaobin0715


    是文件名,,,,在文件名中匹配关键字,查找文件,

TOP

回复 6# soykoa
上面代码不行吗?

TOP

不能用dir /s+findstr。如果路径文件夹中含有关键字也会被复制。

TOP

回复 7# qixiaobin0715


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


想看看有没有什么办法,复制成功了,,,就打印A:共复制N个文件,,,没找到文件就打印B

TOP

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

TOP

主要是需要增量复制

TOP

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

TOP

用for感觉是多此一举。

TOP

回复 11# soykoa
还是要谢谢你,让我去认认真真的把xcopy命令研究了一番。

TOP

直接用copy,,,全部要覆盖一次,,,,xcopy /d ,可以增量复制,,,没有修改过的文件,,日期相同,,就会忽略掉,不复制,,,挺方便的

TOP

返回列表