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

[问题求助] PowerShell怎样更快搜索?

本帖最后由 娜美 于 2024-4-16 16:04 编辑
  1. #@&cls&powershell "type %~s0|out-string|iex"&pause
  2. Get-ChildItem -Recurse *.txt | Select-String  "^$myphone$"|"^$happywitch$"|"^$hello$" | Out-File out.txt
复制代码
想快速通过搜索当到目录及所有子目录在那些文本中是否存在这些行, 但每次需要连续编辑好几个感觉有些麻烦, 想将这些行全部写进一个b.txt文本中去进行搜索

尝试这样似乎不行,  请问如何写才正确, 如何才能更块谢谢
  1. #@&cls&powershell "type %~s0|out-string|iex"&pause
  2. $file = ' D:\b.txt
  3. Get-ChildItem -Recurse *.txt | Select-String  '$file' | Out-File out.txt
复制代码

回复 12# 娜美


递归列举+全文搜索+多个搜索项 , 能有多快?
只能说是这样的

TOP

回复 8# Five66


   大哥哥  使用中发现比我那个更慢

TOP

本帖最后由 娜美 于 2024-4-18 13:16 编辑

那还有没有办法做到完整匹配,  和支持尽可能多特殊字符

TOP

回复 9# 娜美


额 , 每一行就是一个正则表达式 , 想要完整匹配行就
在每一行的开头加上^
在每一行末尾加上$
还有注意特殊字符

TOP

本帖最后由 娜美 于 2024-4-17 17:16 编辑

回复 8# Five66


   哦哦谢谢大哥哥,  这个好像挺快的是模糊匹配字段,  是要完整匹配行

TOP

回复 7# 娜美


    在b.tmp这个文件里改啦 , 例如
(b.tmp不能有空行 ,不能有空行 ,不能有空行 ,不能有空行)
  1. ^myphone$
  2. ^happywitch$
  3. ^hello$
  4. qwer
复制代码
像这种过管道挺坑的 , 建议还是直接来吧 , 比如
  1. Move-Item -Force out.txt out.put
  2. Select-String -LiteralPath ((gci -Recurse *.txt).fullname) -Pattern (gc -LiteralPath 'b.tmp') |Out-File out.put
  3. Move-Item -Force out.put out.txt
复制代码

TOP

本帖最后由 娜美 于 2024-4-17 15:32 编辑

回复 2# Five66


   

$file = get-content  'b.tmp'
Get-ChildItem -Recurse *.txt | Select-String "^$file$" | Out-File out.txt


b文件只能读一行,  多几行就不行了

TOP

回复 5# aloha20200628


我原来就是用的 findstr  /SNXG:b.tmp *.txt >out.txt但发现它不支持unix格式文本和utf16编码,  所以才想改用powershell的

TOP

本帖最后由 aloha20200628 于 2024-4-17 11:00 编辑

回复 1# 娜美

其实在命令行跑一个findstr即可拿下楼主所求
  1. findstr /simg:b.lst *.txt
复制代码
用b.lst中的每行关键词搜索当前目录及其子目录中的所有*.txt,将其中包含关键词的每个*.txt文件名列表显示...
或者将输出结果写入out.lst
  1. findstr /simg:b.lst *.txt>out.lst
复制代码

TOP

直接放数组里试

TOP

回复 2# Five66


   试过不行

TOP

不要用英文单引号将变量引起来
不行就试试get-content 'D:\b.txt'

TOP

返回列表