标题: [文件操作] 批处理怎样查询查询含有列表123.txt里面的关键字的xml文件并复制到固定的盘? [打印本页]
作者: ICECREEN 时间: 2019-4-19 13:01 标题: 批处理怎样查询查询含有列表123.txt里面的关键字的xml文件并复制到固定的盘?
求大神帮忙写一个批处理:查询查询含有列表123.txt里面的关键字的xml文件并复制到固定的路径,123.txt面保存的是240个序列号
作者: Batcher 时间: 2019-4-19 13:24
- @echo off
- for /f "delims=" %%i in ('type "123.txt"') do (
- for /f "delims=" %%j in ('findstr /m /c:"%%i" *.xml') do (
- copy /y "%%j" "D:\固定的路径\"
- )
- )
复制代码
作者: zaqmlp 时间: 2019-4-19 14:05
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- start mshta VBScript:Execute("msgbox(""%info%""):close")
- set "固定的路径=D:\123\test"
- set "文本=123.txt"
- if not exist "%固定的路径%" md "%固定的路径%"
- cd /d "%~dp0"
- powershell ^
- $txtlines=@(gc '%文本%');^
- dir *.xml^|?{$_ -is [System.IO.FileInfo]}^|%%{^
- $xmltext=@(gc $_.FullName) -join \"`r`n\";^
- for($i=0;$i -lt $txtlines.length;$i++){^
- if($xmltext.Contains($txtlines[$i])){^
- cp -liter $_.FullName '%固定的路径%' -force;^
- write-host ('['+$txtlines[$i]+']'+$_.FullName+' --^> %固定的路径%');^
- break;^
- };^
- };^
- }
- pause
复制代码
作者: ICECREEN 时间: 2019-4-19 14:17
回复 2# Batcher
大神你好,请问findstr /m /c:"%%i" *.xml这指的是从C盘搜索含有文本内列表的关键字的xml文件吗?另外我的123.txt文本里面的序列号需要排序标识吗?
我稍微修改了一下,但是无法运行,请指教。注:需要搜寻的文件在这个目录下D:\VHE LOG\,123.txt也在这个D:\VHE LOG\目录下
@echo off
for /f "delims=" %%i in ('type "123.txt"') do (
for /f "delims=" %%j in ('findstr /m /d:"%%i" *.xml') do (
copy /y "%%j" "D:\VHE LOG\BACKUP\"
)
)
作者: Batcher 时间: 2019-4-19 14:55
回复 4# ICECREEN - @echo off
- cd /d "D:\VHE LOG\"
- for /f "delims=" %%i in ('type "123.txt"') do (
- for /f "delims=" %%j in ('findstr /m /c:"%%i" *.xml') do (
- copy /y "%%j" "D:\VHE LOG\BACKUP\"
- )
- )
复制代码
不要修改findstr命令后面的 /c:
它不是表示盘符
作者: ICECREEN 时间: 2019-4-19 16:29
回复 3# zaqmlp
你的有病毒,你妹的,害我 ,我举报你
作者: zaqmlp 时间: 2019-4-19 16:45
回复 6# ICECREEN
嗯,来吧,举报我
作者: WHY 时间: 2019-4-19 22:48
mshta 调用 vbscript 或 javascript 会被 Defender 误报,没有病毒。
作者: ICECREEN 时间: 2019-4-20 11:16
回复 8# WHY
我的电脑运行他的脚本后出现了感染性病毒,一直生成了很多垃圾文件,不仅仅是那个mshta而已
作者: ICECREEN 时间: 2019-4-20 11:22
回复 8# WHY
你可以就这个问题帮忙给个建议吗,谢谢
作者: ICECREEN 时间: 2019-4-23 11:16
回复 5# Batcher
您好,您给的代码执行不成功呢,是否因为我的TXT文本里面是按列排序的160个序列号太多了。我对你的代码的理解是,将文本123.txt的值赋值给%%I,然后在文件夹内循环查找带有%%I的关键字的xml文件赋值给%%J,最后将%%J copy到BACKUP文件夹内。
作者: ICECREEN 时间: 2019-4-23 11:45
回复 2# Batcher
您好,我稍微修改了下,现在已经可以运行,但是现在又面临一个新的问题,就是里面有很多重复的文件,只是时间不一样而已,可以删除重复多余的文件只留一个吗?
@echo off
cd /d "D:\VHE LOG\"
for /f "tokens=*" %%i in ('type "123.txt"') do (
for /f "delims=" %%j in ('dir /a-d /b /s ^| findstr "%%i"') do (
copy "%%j" "D:\VHE LOG\BACKUP\"
)
)
作者: Batcher 时间: 2019-4-23 14:23
回复 12# ICECREEN
copy /y "%%j" "D:\VHE LOG\BACKUP\"
试试这样可以吗?
作者: ICECREEN 时间: 2019-4-23 14:59
回复 13# Batcher
试过了,不是完全重名的,不会覆盖。文件名后缀是日期,前缀一致时间不同视为重复,这种覆盖不了吧。列子:FtsRes_VHE-SFT1_ZSR515_20190409175643437_20194995643472.xml和FtsRes_VHE-SFT1_515_20190409181422428_201949101422492视为重复。这种请问怎么覆盖呢?有什么好的建议吗?
作者: Batcher 时间: 2019-4-23 16:50
回复 14# ICECREEN
前缀是 FtsRes 还是 FtsRes_VHE-SFT1?
作者: ICECREEN 时间: 2019-4-23 18:48
回复 15# Batcher
除去20190409175643437_20194995643472前面的都算前缀,前缀一致视为重复
作者: Batcher 时间: 2019-4-23 20:11
回复 16# ICECREEN
FtsRes_VHE-SFT1_ZSR515_20190409175643437_20194995643472.xml
FtsRes_VHE-SFT1_515_20190409181422428_201949101422492
你14楼给的这个例子是不是写错了,这种情况认为是重复还是不重复?
作者: ICECREEN 时间: 2019-4-24 13:27
回复 17# Batcher
不好意思,漏写了,这种视为不重复。FtsRes_VHE-SFT1_ZSR515_20190409175643437_20194995643473.xml和FtsRes_VHE-SFT1_ZSR515_20190409175653537_20194995653573.xml视为重复
作者: Batcher 时间: 2019-4-24 13:53
回复 18# ICECREEN - @echo off
- cd /d "D:\VHE LOG\"
- for /f "tokens=*" %%i in ('type "123.txt"') do (
- for /f "delims=" %%j in ('dir /a-d /b /s ^| findstr "%%i"') do (
- for /f "tokens=1-3 delims=_" %%a in ("%%j") do (
- if not defined %%a_%%b_%%c (
- copy /y "%%j" "D:\VHE LOG\BACKUP\"
- set %%a_%%b_%%c=1
- )
- )
- )
- )
复制代码
作者: ICECREEN 时间: 2019-4-26 13:01
回复 19# Batcher
Thanks,大神
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |