找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15573|回复: 2

[解决]40元求unicode文本提取

  [复制链接]
发表于 2020-8-4 14:52:02 | 显示全部楼层 |阅读模式
本帖最后由 lxh623 于 2020-8-4 17:59 编辑

文本a和tmp都是UTF-8编码。
文本a的格式是中文字符或者偏旁部首,用制表符分隔。每一行一个到四个。(考虑平时别的应用,加了一个。)
用文本a的每一行的几个元素,不考虑顺序,搜索文本tmp,如果都有,写入文本b(UTF-8)。写入格式是“\1\2\3\4\t+tmp那一行”。文本a的每一行搜索到没有为止。(一行可能有多个结果!!)
文本a可能有一万行,tmp可能有九万行。
谢谢!
发表于 2020-8-4 15:47:41 | 显示全部楼层
  1. <# :
  2. cls
  3. @echo off
  4. cd /d "%~dp0"
  5. powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
  6. pause
  7. exit
  8. #>
  9. $path=$args[0].trimend('\');
  10. $file1=$path+'\a.txt';
  11. $file2=$path+'\tmp.txt';
  12. $file3=$path+'\b.txt';
  13. if(-not (test-path -liter $file1)){Write-host ('"'+$file1+'" not found');exit;};
  14. if(-not (test-path -liter $file2)){Write-host ('"'+$file2+'" not found');exit;};
  15. $arr=New-Object -TypeName System.Collections.ArrayList;
  16. $enc=$Utf8NoBom=New-Object System.Text.UTF8Encoding $False;
  17. $text1=[IO.File]::ReadAllLines($file1, $enc);
  18. for($i=0;$i -lt $text1.count;$i++){
  19.     $brr=$text1[$i] -split '[\t]+'
  20.     [void]$arr.add($brr);
  21. };
  22. $fs=New-Object System.IO.FileStream($file3, [System.IO.FileMode]::Create);
  23. $sw=New-Object System.IO.StreamWriter($fs, $enc);
  24. $text2=[IO.File]::ReadAllLines($file2, $enc);
  25. for($i=0;$i -lt $text2.count;$i++){
  26.     for($j=0;$j -lt $arr.count;$j++){
  27.         $n=0;
  28.         for($k=0;$k -lt $arr[$j].count;$k++){
  29.             if($text2[$i].contains($arr[$j][$k])){$n++};
  30.         };
  31.         if($n -eq $arr[$j].count){
  32.             $tmpline=($arr[$j] -join '\')+"`t"+$text2[$i];
  33.             $sw.WriteLine($tmpline);
  34.             $sw.Flush();
  35.             break;
  36.         };
  37.     };
  38. };
  39. $sw.Close();
  40. $fs.Close();
复制代码

评分

参与人数 1技术 +1 收起 理由
lxh623 + 1 感谢分享

查看全部评分

 楼主| 发表于 2020-8-4 18:00:03 | 显示全部楼层
回复 2# zaqmlp
请查收!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:07 , Processed in 0.018192 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表