标题: [文件操作] [已解决]批处理根据txt中关键字查找并复制文件 [打印本页]
作者: gddsssko 时间: 2024-10-8 15:12 标题: [已解决]批处理根据txt中关键字查找并复制文件
txt中含有文件名关键词
abc123
abc456
...
要在指定目录下C:\MyFile中(包含所有子文件夹和子子文件夹...) 查找所有含有这些此关键词的rar文件 并复制到指定路径下C:\Test。
作者: hfxiang 时间: 2024-10-8 15:36
回复 1# gddsssko - @echo off
- cd/dC:\MyFile
- for /f "tokens=*" %%a in ('dir *abc123*.rar *abc456*.rar /b/s') do copy "%%~a" "C:\Test\"
复制代码
作者: hfxiang 时间: 2024-10-8 16:05
回复 1# gddsssko
楼主又修改了需求 ,之后的实现方式如下:- @echo off
- cd/dC:\MyFile
- for /f "tokens=*" %%a IN (文件名关键词.txt) DO @for /f "tokens=*" %%b in ('dir "*%%~a*.rar" /b/s') do copy "%%~b" "C:\Test\"
复制代码
作者: gddsssko 时间: 2024-10-8 16:45
回复 3# hfxiang
感谢大佬。
作者: qixiaobin0715 时间: 2024-10-9 09:18
关键词文本文件及批处理文件放在 C:\myfile 路径下:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in (KeyWord.txt) do set KeyWord=!KeyWord!"*%%i*.rar"
- for /f "delims=" %%i in ('dir /b /s /a-d %KeyWord%') do copy "%%i" "c:\test\"
- pause
复制代码
这样应当效率更高些,不需要每个关键词都要使用一次for /f +dir循环体。
作者: aloha20200628 时间: 2024-10-9 10:33
本帖最后由 aloha20200628 于 2024-10-9 10:40 编辑
各有看点》3楼代码采用逐行处理关键词,不限于关键词行数或总字符量,5楼代码受限于 'dir /b/s "..." "..." ...' 整个命令行长度,似乎系统限制命令行长度为8k字符量...
作者: qixiaobin0715 时间: 2024-10-9 10:40
本帖最后由 qixiaobin0715 于 2024-10-9 10:54 编辑
回复 6# aloha20200628
我写代码时也想到了,这个问题应当从实际情况来考虑。通常来说像这种问题可以不考虑变量长度问题,关键词通常不会很多,如果真是成千上万个关键词,则需要考虑其它方案。如果只是三五个就无所谓效率问题了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |