gpt4 book ai didi

batch-file - 一种有两个 findstr(和管道输出)

转载 作者:行者123 更新时间:2023-12-03 16:46:51 24 4
gpt4 key购买 nike

我有 50 个文件,名称如下:CPUNAME_installer.txt,每个文件的内容如下:

CPUNAME;11724;sdaasdasdasdasdasdasd
CPUNAME;1034;231asddasd
CPUNAME;1035;231asddasd
CPUNAME;10741;231asddasd
CPUNAME;10111;231asddasd

...等等,数百行。我想检查是否有代码为 11724、1034 或 1487 的行,如果为真,则将整行通过管道传输到另一个文件夹中具有相同名称的另一个文本文件。

现在我有了这个可行的解决方案:

for %%f in (*_installer.txt) do (
type %%f | findstr /I /C:"11724">>outfolder\%%f
type %%f | findstr /I /C:"1034">>outfolder\%%f
type %%f | findstr /I /C:"1487">>outfolder\%%f
)

...但是它需要很多时间,因为它要为每个文件执行六个命令。

是否可以通过减少每个文件(或类似文件)的命令数量来改善这一点?

最佳答案

阅读 FINDSTR 文档(在命令窗口中键入 HELP FINDSTR)- 您将看到 FINDSTR 可以一次搜索多个字符串。

因为这个错误,您使用带有多个搜索字符串的/I 选项是好的:Why doesn't this FINDSTR example with multiple literal search strings find a match? .

此外,无需键入内容并通过管道传输到 FINDSTR。您可以简单地将文件名作为参数传递。

在您的情况下,由于您的字符串不包含空格,您的代码可能如下所示:搜索字符串由空格分隔。

for %%f in (*_installer.txt) do findstr /i "11724 1034 1487" "%%f" >"outfolder\%%f"

注意以上几点。如果您更改搜索字符串,您可能需要添加 /L 选项以强制将字符串视为字符串文字而不是正则表达式。

指定多个搜索的另一种方法是使用多个 /C 选项。除非使用 /R 选项,否则这些搜索字符串始终被视为文字。

for %%f in (*_installer.txt) do findstr /i /c:"11724" /c:"1034" /c:"1487" "%%f" >"outfolder\%%f"

您可能还想研究一下 /G:file 选项。它允许您将搜索字符串放在一个单独的文本文件中,每行一个。您可以使用此技术方便地搜索许多 字符串。

附言

使用 FINDSTR 时有许多未记录的问题。您可能有兴趣阅读 What are the undocumented features and limitations of the Windows FINDSTR command?

关于batch-file - 一种有两个 findstr(和管道输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13380514/

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