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

【已解决】【30元红包】指定路径所有文件夹里(包含子文件夹)里的xml文件删除行

本帖最后由 linfeng_321 于 2022-5-29 18:35 编辑

文件夹
.\111
.\222
.\333
...

标签前缀(删除整行)
<Text name="123
<Text name="234
<Text name="763
...

操作流程:
1、排除文件夹“.\222”将其他文件夹里的xml文件里标签“标签前缀(删除整行)”。

注:排除文件夹和多个标签前缀,放再顶部变量我可以设置。

  1. <# :
  2. cls&echo off&cd /d "%~dp0"&mode con lines=5000&rem bat存为ANSI/GB2312编码
  3. set "current=%cd%"
  4. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
  5. pause
  6. exit
  7. #>
  8. $current=$env:current;
  9. $folders=@"
  10. .\111
  11. .\333
  12. "@;
  13. $line_prefix=@'
  14. <Text name="123
  15. <Text name="234
  16. <Text name="763
  17. '@;
  18. $enc=New-Object System.Text.UTF8Encoding $False;
  19. $arr=$folders.trim() -split '[\r\n]+';
  20. $brr=@($line_prefix.trim() -split '[\r\n]+'|%{$_.trim().ToLower()});
  21. for($i=0;$i -lt $arr.length;$i++){
  22.     if(test-path -literal $arr[$i]){
  23.         $files=@(dir -literal $arr[$i] -recurse|?{('.xml' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
  24.         for($j=0;$j -lt $files.length;$j++){
  25.             write-host $files[$j].FullName;
  26.             $s=New-Object -TypeName System.Collections.ArrayList;
  27.             $text=[IO.File]::ReadAllLines($files[$j].FullName, $enc);
  28.             for($k=0;$k -lt $text.count;$k++){
  29.                 $ismatch=$false;
  30.                 $line=$text[$k].trim().ToLower();
  31.                 for($p=0;$p -lt $brr.length;$p++){
  32.                     if($line.StartsWith($brr[$p])){
  33.                         $ismatch=$true;
  34.                         break;
  35.                     }
  36.                 }
  37.                 if(-not $ismatch){[void]$s.add($text[$k]);}
  38.             }
  39.             [IO.File]::WriteAllLines($files[$j].FullName, $s, $enc);
  40.         }
  41.     }else{
  42.         write-host ($arr[$i]+' not found') -ForegroundColor yellow;
  43.     }
  44. }
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 2# zaqmlp


    已支付,谢谢大佬!

TOP

返回列表