我有个关于批处理文件的问题。我需要一个批处理文件,它将找到一个字符串的数字&字母组合,每行仅10个字母(在多个.txt文件中),并将整行打印到输出.txt文件中。目前,我一直在使用这个方法:
@echo off
findstr "A1234 B5678" "*.txt"
for /f "delims=" %%A in ('findstr "A1234 B5678" "*.txt"') do (echo %%A >> OUTPUTFILE.txt) 因此,我在上面寻找的是目录中所有txt文件中的字母A1234和B5678 (只是一个例子)的组合,并将它们打印到outputfile.txt中。它的效果很好,但我需要改进一点。我只希望批处理在前10个字母中找到这个组合(A1234和B5678),并将整行打印到输出txt文件中。例如,我们将有一个多个txt文件,在它们自己的行中,如下所示:
00 A1234 QWERTZ
AA B5678 ASDFGH批处理将检查字符串组合A1234和B5678的所有文件,并打印出包含该组合的整行。
我希望你们能理解我,因为我的英语不是最好的。另外,我在cmd方面也不是很有经验,所以如果可能的话,请让它尽可能简单(可以理解) :)。
非常感谢!
发布于 2013-09-16 10:18:54
还有另一种方法可以更复杂一些,但它不依赖于额外的代码。它将当前目录中的所有txt文件分割成行。这些行的前10个字符被输入findstr。如果findstr成功,它会将该行回显到控制台。
使用以下批处理文件:
@echo off
setlocal
for /f "delims=" %%I in ('dir/B *.txt') do (
for /f "delims=" %%J in (%%I) do (
set "_=%%J"
call echo %%_:~0,10%%|findstr "PATTERN1 PATTERN2"&&call echo %%_%%
)
)
endlocal
goto:eof对于裂缝:我知道是有缺陷的。这样,就可以避免使用
setlocal ENABLEDELAYEDEXPANSION和
echo !_:~0,10!|findstr "PATERN1 PATERN2"&&call echo !_!但我认为这是不好的风格,因为这往往会造成问题,特别是如果你想要回音包括'!‘因此,我总是在我的示例中使用调用和double %样式,但不能避免DELAYEDEXPANSION。
https://stackoverflow.com/questions/18823489
复制相似问题