标题: [文本处理] 批处理怎样对比两个文本并做出一些动作? [打印本页]
作者: yahui102 时间: 2019-5-19 04:33 标题: 批处理怎样对比两个文本并做出一些动作?
大佬们好,我是有这样的一个想法
两个文本,name.txt 和 lujing.txt.
想让luijng.txt文本检测到有name.txt里面的内容的那一行,的这个文件路径删除掉,也就是删掉"C:\xiaohei.jpg" 和"C:\xiaobai.jpg" 还有"C:\xiaohong.jpg"
请教这个批处理应该怎么写
name.txt内容为
xiaohong
xiaohei
xiaobai
lujing.txt内容为
"C:\333333.jpg"
"C:\xiaohei.jpg"
"C:\555555.jpg"
"C:\xiaobai.jpg"
"C:\666666.jpg"
"C:\xiaohong.jpg"
"C:\777777.jpg"
"C:\888888.jpg"
"C:\999999.jpg"
作者: zaqmlp 时间: 2019-5-19 05:36
是删除txt里面的行内容还是实际的路径文件?
作者: yahui102 时间: 2019-5-19 06:52
你好大佬,我是想删除实际路径的文件,我会用比较笨的办法把文件路径都复制到文本里面,然后对比文件名,有相同名的就删除掉那个文件
作者: yahui102 时间: 2019-5-19 06:55
如果可以实现的话,确定会被删掉的这些文件可以有个提示让看一眼吗,就是说继续操作的话,这几个文件会被删除,能知道一下是哪些即将被删掉了
作者: zaqmlp 时间: 2019-5-19 08:28
本帖最后由 zaqmlp 于 2019-5-19 08:37 编辑
- @echo off
- mode con lines=500
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
- set "文本1=name.txt"
- set "文本2=lujing.txt"
- powershell -NoProfile -ExecutionPolicy bypass ^
- $accurate=$true;$extension=$false;^
- $t1=[IO.File]::ReadAllLines('%文本1%',[Text.Encoding]::Default);^
- $t2=[IO.File]::ReadAllLines('%文本2%',[Text.Encoding]::Default);^
- [System.Collections.ArrayList]$list=@();^
- for($i=0;$i -lt $t1.Count;$i++){^
- for($j=0;$j -lt $t2.Count;$j++){^
- $line=$t2[$j].trim('\""');^
- $arr=$line.split('\');$name='';^
- if($extension){$name=$arr[-1];}else{$name=$arr[-1] -replace '\.[^^\.]*$','';};^
- if($accurate){^
- if($t1[$i] -eq $name){[void]$list.add($line)};^
- }else{^
- if($name.toLower().Contains($t1[$i].toLower())){[void]$list.add($line)};^
- };^
- };^
- };^
- $list;^
- write-host '%info%' -ForegroundColor green;^
- write-host \"`r`n>>按回车键执行删除<<\";^
- [Console]::ReadKey()^|Out-Null;^
- for($i=0;$i -lt $list.Count;$i++){^
- if(test-path -liter $list[$i]){^
- write-host ('--^>'+$list[$i]);^
- del -liter $list[$i] -force;^
- };^
- }
- pause
复制代码
作者: Batcher 时间: 2019-5-19 18:08
- findstr /v /g:name.txt lujing.txt >结果.txt
复制代码
作者: Batcher 时间: 2019-5-19 18:08
- @echo off
- findstr /v /g:name.txt lujing.txt >lujing_new.txt
- move /y lujing_new.txt lujing.txt
复制代码
作者: miqilaosu 时间: 2019-5-20 11:06
新人刚学来水一个
cd /d %~dp0
echo off
for /f "delims=*" %%a in ('type "name.txt"') do (
for /f "delims=*" %%i in ('type "lujing.txt"') do (
if "%%~ni"=="%%a" (
del %%i
echo,%%i %time% %date%
)
)
)>>lujing.log
start /b lujing.log
pause
作者: yahui102 时间: 2019-5-20 18:41
非常感谢大家,感谢管理员的指点,感谢zaqmlp,感谢miqilaosu,感谢Batcher,这里真像有家的感觉,好温暖,不愧是批处理之家。我会常常多看帖子多学习的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |