在.csv文件中查找关键字

时间:2018-01-24 08:47:25

标签: batch-file

我正在尝试创建从特定文件中读取特定CSV文档的批处理文件,并提取一些具有特定编号的行并将其打印出来并在屏幕上显示#34;整条线!"。问题是我创建了代码,但它根本不起作用,每当我尝试它时只打印行号!?

代码:

@echo off
setlocal EnableDelayedExpansion
set "yourDir=C:\Users\Adminm\Desktop\test11\"
set "yourExt=csv"
set "keyword=44"
set /a count=0

set linenum=!count!
set c=0


pushd %yourDir%

for %%a in (*.%yourExt%) do (
    for /f "usebackq tokens=3 delims=," %%b in (%yourDir%%%a) do (
    set /a count = !count! + 1
    if NOT %%b == %keyword% (
    for /f "delims=" %%1 in ('type %yourDir%%%a') do (
    set /a c+=1 && if "!c!" equ "%linenum%" echo %%1%
    )
    )
    )
)

echo !count!

popd
endlocal

提前感谢< 3

1 个答案:

答案 0 :(得分:1)

for %%a in (*.%yourExt%) do (
    for /f "usebackq delims=" %%L in ("%%a") do (
     for /f "tokens=3 delims=," %%b in ("%%L") do (
     if %%b == %keyword% echo %%L
     )
    )
)

假设你要做的是在column3中扫描每个文件中的目标字符串,然后:

由于您已更改为yourdir,因此无需在扫描文件名for中指定它。

您尝试找到所需的行是笨拙的。您需要做的就是依次将每一行分配给元变量%%L),然后使用for/来解析元变量。当所需数据匹配时,只需echo包含整行的元变量

您已尝试将%%1用作元变量 n = 0..9的%n是指提供给例程的参数号。此处使用的唯一正式定义的元变量%%a .. %%z%%A .. %%Z(一个批处理区分大小写的极少数地方) - 尽管其他一些符号也有效。数字不会在这里工作。