我正在尝试创建从特定文件中读取特定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
答案 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
(一个批处理区分大小写的极少数地方) - 尽管其他一些符号也有效。数字不会在这里工作。