标题: 【已解决】【30元红包】指定路径所有文件夹里(包含子文件夹)里的xml文件删除行 [打印本页]
作者: linfeng_321 时间: 2022-5-29 17:48 标题: 【已解决】【30元红包】指定路径所有文件夹里(包含子文件夹)里的xml文件删除行
本帖最后由 linfeng_321 于 2022-5-29 18:35 编辑
文件夹
.\111
.\222
.\333
...
标签前缀(删除整行)
<Text name="123
<Text name="234
<Text name="763
...
操作流程:
1、排除文件夹“.\222”将其他文件夹里的xml文件里标签“标签前缀(删除整行)”。
注:排除文件夹和多个标签前缀,放再顶部变量我可以设置。
作者: zaqmlp 时间: 2022-5-29 18:17
- <# :
- cls&echo off&cd /d "%~dp0"&mode con lines=5000&rem bat存为ANSI/GB2312编码
- set "current=%cd%"
- powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
- pause
- exit
- #>
- $current=$env:current;
-
- $folders=@"
- .\111
- .\333
- "@;
-
- $line_prefix=@'
- <Text name="123
- <Text name="234
- <Text name="763
- '@;
-
-
- $enc=New-Object System.Text.UTF8Encoding $False;
- $arr=$folders.trim() -split '[\r\n]+';
- $brr=@($line_prefix.trim() -split '[\r\n]+'|%{$_.trim().ToLower()});
- for($i=0;$i -lt $arr.length;$i++){
- if(test-path -literal $arr[$i]){
- $files=@(dir -literal $arr[$i] -recurse|?{('.xml' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
- for($j=0;$j -lt $files.length;$j++){
- write-host $files[$j].FullName;
- $s=New-Object -TypeName System.Collections.ArrayList;
- $text=[IO.File]::ReadAllLines($files[$j].FullName, $enc);
- for($k=0;$k -lt $text.count;$k++){
- $ismatch=$false;
- $line=$text[$k].trim().ToLower();
- for($p=0;$p -lt $brr.length;$p++){
- if($line.StartsWith($brr[$p])){
- $ismatch=$true;
- break;
- }
- }
- if(-not $ismatch){[void]$s.add($text[$k]);}
- }
- [IO.File]::WriteAllLines($files[$j].FullName, $s, $enc);
- }
- }else{
- write-host ($arr[$i]+' not found') -ForegroundColor yellow;
- }
- }
复制代码
作者: linfeng_321 时间: 2022-5-29 18:34
回复 2# zaqmlp
已支付,谢谢大佬!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |