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

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

[复制链接]
发表于 2024-4-16 13:46:57 | 显示全部楼层 |阅读模式
本帖最后由 娜美 于 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
复制代码
发表于 2024-4-16 17:26:29 | 显示全部楼层
不要用英文单引号将变量引起来
不行就试试get-content 'D:\b.txt'
 楼主| 发表于 2024-4-16 18:38:22 | 显示全部楼层
回复 2# Five66


   试过不行
发表于 2024-4-16 19:28:32 | 显示全部楼层
直接放数组里试
发表于 2024-4-17 10:56:18 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2024-4-17 13:08:39 | 显示全部楼层
回复 5# aloha20200628


我原来就是用的 findstr  /SNXG:b.tmp *.txt >out.txt但发现它不支持unix格式文本和utf16编码,  所以才想改用powershell的
 楼主| 发表于 2024-4-17 13:27:12 | 显示全部楼层
本帖最后由 娜美 于 2024-4-17 15:32 编辑

回复 2# Five66


   

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


b文件只能读一行,  多几行就不行了
发表于 2024-4-17 16:54:06 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2024-4-17 17:14:47 | 显示全部楼层
本帖最后由 娜美 于 2024-4-17 17:16 编辑

回复 8# Five66


   哦哦谢谢大哥哥,  这个好像挺快的是模糊匹配字段,  是要完整匹配行
发表于 2024-4-17 18:05:28 | 显示全部楼层
回复 9# 娜美


额 , 每一行就是一个正则表达式 , 想要完整匹配行就
在每一行的开头加上^
在每一行末尾加上$
还有注意特殊字符
 楼主| 发表于 2024-4-17 19:51:51 | 显示全部楼层
本帖最后由 娜美 于 2024-4-18 13:16 编辑

那还有没有办法做到完整匹配,  和支持尽可能多特殊字符
 楼主| 发表于 2024-4-18 20:45:16 | 显示全部楼层
回复 8# Five66


   大哥哥  使用中发现比我那个更慢
发表于 2024-4-19 16:52:04 | 显示全部楼层
回复 12# 娜美


递归列举+全文搜索+多个搜索项 , 能有多快?
只能说是这样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 05:46 , Processed in 0.020956 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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