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

[文本处理] 批处理怎样对比两个文本并做出一些动作?

大佬们好,我是有这样的一个想法
两个文本,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"

是删除txt里面的行内容还是实际的路径文件?
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

你好大佬,我是想删除实际路径的文件,我会用比较笨的办法把文件路径都复制到文本里面,然后对比文件名,有相同名的就删除掉那个文件

TOP

如果可以实现的话,确定会被删掉的这些文件可以有个提示让看一眼吗,就是说继续操作的话,这几个文件会被删除,能知道一下是哪些即将被删掉了

TOP

本帖最后由 zaqmlp 于 2019-5-19 08:37 编辑
  1. @echo off
  2. mode con lines=500
  3. set info=互助互利,支付宝扫码头像,感谢赞助
  4. rem 有问题,可加QQ956535081及时沟通
  5. title %info%
  6. cd /d "%~dp0"
  7. set "文本1=name.txt"
  8. set "文本2=lujing.txt"
  9. powershell -NoProfile -ExecutionPolicy bypass ^
  10.     $accurate=$true;$extension=$false;^
  11.     $t1=[IO.File]::ReadAllLines('%文本1%',[Text.Encoding]::Default);^
  12.     $t2=[IO.File]::ReadAllLines('%文本2%',[Text.Encoding]::Default);^
  13.     [System.Collections.ArrayList]$list=@();^
  14.     for($i=0;$i -lt $t1.Count;$i++){^
  15.         for($j=0;$j -lt $t2.Count;$j++){^
  16.             $line=$t2[$j].trim('\""');^
  17.             $arr=$line.split('\');$name='';^
  18.             if($extension){$name=$arr[-1];}else{$name=$arr[-1] -replace '\.[^^\.]*$','';};^
  19.             if($accurate){^
  20.                 if($t1[$i] -eq $name){[void]$list.add($line)};^
  21.             }else{^
  22.                 if($name.toLower().Contains($t1[$i].toLower())){[void]$list.add($line)};^
  23.             };^
  24.         };^
  25.     };^
  26.     $list;^
  27.     write-host '%info%' -ForegroundColor green;^
  28.     write-host \"`r`n>>按回车键执行删除<<\";^
  29.     [Console]::ReadKey()^|Out-Null;^
  30.     for($i=0;$i -lt $list.Count;$i++){^
  31.         if(test-path -liter $list[$i]){^
  32.             write-host ('--^>'+$list[$i]);^
  33.             del -liter $list[$i] -force;^
  34.         };^
  35.     }
  36. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

  1. findstr /v /g:name.txt lujing.txt >结果.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. findstr /v /g:name.txt lujing.txt >lujing_new.txt
  3. move /y lujing_new.txt lujing.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

新人刚学来水一个
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

TOP

非常感谢大家,感谢管理员的指点,感谢zaqmlp,感谢miqilaosu,感谢Batcher,这里真像有家的感觉,好温暖,不愧是批处理之家。我会常常多看帖子多学习的

TOP

返回列表