gpt4 book ai didi

windows - 提高 Windows 批处理脚本性能

转载 作者:可可西里 更新时间:2023-11-01 09:58:27 24 4
gpt4 key购买 nike

我想从文本文件中删除特定的行,使用这个命令:

for /f "delims=" %%d in ('"dir <Dir_Path> /a /b /s | sort"') do type %%d | findstr /V <String_To_Delete>  >  <%%d_Filtered.txt>

它正在运行,但非常非常慢。如何改进命令或使其在多核中使用?

最佳答案

在您发布的命令行中,最慢的部分可能是findstrsort 和cmd 的管道管理。

  • findstr 是大热门。它需要读取每个整个文件,但这是练习的全部原因。如果您不需要正则表达式支持,您可以通过使用文字搜索字符串和 /L 参数禁用正则表达式支持来稍微加快速度。如果可能,请尝试预过滤您的文件列表以减少 findstr 必须解析的数据量。

  • 命令行中的
  • sort 只会更改处理文件的顺序,但要这样做,它需要将整个文件列表读入内存并运行排序算法在他们。除非您有特定原因必须按目录/文件名的字母顺序处理文件,否则我将跳过此步骤。

  • 通过使用 type 读取文件名然后通过 CMD 管道运行数据,您可能会损失一些性能。简单地让 findstr 直接读取文件可能会更快,而不是使用 STDIN。

使用上面的建议,你的命令行变成

for /f "delims=" %%d in ('"dir <Dir_Path> /a /b /s"') do findstr /V /L [Literal_String] %%d  >  [%%d_Filtered.txt]

请注意,在优化时,您应该始终使用诸如 timethis.exe 之类的工具来衡量您的性能,而不是仅仅接受网站上某个人的话。

关于windows - 提高 Windows 批处理脚本性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34058575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com