gpt4 book ai didi

string - 批量 - 查找行中前 10 个字符中的字符串并打印整行

转载 作者:行者123 更新时间:2023-12-02 04:30:06 36 4
gpt4 key购买 nike

我在使用 findstr 命令时遇到问题。我正在使用批处理文件执行一个过程,该过程将搜索文件夹中的所有 .txt 并打印出前 10 个字符中包含先前定义的字符串的行。到目前为止我一直在使用这批:

for /f "delims=" %%I in ('dir/B *.txt') do (    for /f "delims=" %%J in (%%I) do (        set "=%%J"        call echo %%:~0,10%%|findstr "R0621 32411"&&call echo %%_%% >> search.txt    ) )endlocal    
然而,不知何故,这个批处理不会打印出包含 R0621 或 32411 等字符串的行。这是一个错误吗?当我尝试典型的 findstr 批处理时,它可以正常工作并打印出行。例如这个:
findstr "R0621 32411" *.txt >> search.txt    
此批处理搜索的 .txt 文件如下所示:
AA32411   AAA RANDOMTEXTANDNUMBERS 13121313212153BBR0621   BBB RANDOMTEXTANDNUMBERS 78975487798797CCY4488   CCC RANDOMTEXTANDNUMBERS 44455577799998    
我无法使用 findstr,因为它会在 10 个字符之后找到字符串以及我不需要的那些行(我只需要那些在每行前 10 个字符中定义了字符串的行)。

还有其他选择吗?我尝试搜索互联网,但找不到任何帮助。另外,为了更好地理解,您可以查看我之前的帖子 Batch to find a string of number&letter combination only in first 10 characters (in a txt file) per row and print the whole row

最佳答案

@echo off
setlocal EnableDelayedExpansion

rem Seek the target strings in all .txt files
(for /F "tokens=1* delims=:" %%a in ('findstr "R0621 32411" *.txt') do (
rem Check that the target string(s) exists in first 10 characters of found lines
set "line=%%b"
rem Get just the first 10 characters
set "tenChars=!line:~0,10!"
rem If R0621 was in first 10 characters
if "!tenChars:R0621=!" neq "!tenChars!" (
echo !line!
rem If 32411 was in first 10 characters
) else if "!tenChars:32411=!" neq "!tenChars!" (
echo !line!
)
)) > search.out

请注意,如果输出文件有 .txt 扩展名,它将包含在原始 findstr 中!您可以在末尾使用 ren search.out search.txt 命令以正确的扩展名重命名输出文件,或者在不同的目录中创建具有 .txt 扩展名的输出文件。

关于string - 批量 - 查找行中前 10 个字符中的字符串并打印整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818504/

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