测试特定路径中的文本文件中哪一个在其第二行包含值,并使用Windows批处理文件将文件名保存到另一个文本文件。
到目前为止,这就是我所做的。
@echo off
setlocal ENABLEDELAYEDEXPANSION
SET COUNT=0
FOR %%A IN (C:\Users\mark.jim.a.mercado\Desktop\*.txt) DO (
ECHO %%A
)
pause
它将列出我使用的目录中的所有文本文件,但是当我尝试将其名称保存到另一个文本文件时(使用下面的代码),只会保存最后一个文本文件的名称。
@echo off
setlocal ENABLEDELAYEDEXPANSION
SET COUNT=0
FOR %%A IN (C:\Users\mark.jim.a.mercado\Desktop\*.txt) DO (
ECHO %%A @echo off
setlocal ENABLEDELAYEDEXPANSION
SET COUNT=0
FOR %%A IN (C:\Users\mark.jim.a.mercado\Desktop\*.txt) DO (
ECHO %%A >C:\Users\mark.jim.a.mercado\Desktop\names.txt
)
pause
答案 0 :(得分:0)
你不能说出要寻找的价值。 IMO最简单的方法是使用findstr对行进行编号,使用另一个管道的findstr来过滤:2:
又名第二行(如果存在)
假设有三个文件:one.txt two.txt,three.txt具有类似的行数和内容:
> type *.txt
one.txt
one
two.txt
one
two
three.txt
one
two
three
这批:
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
For /f "tokens=1,2* delims=:" %%A in (
'findstr /N "^" *.txt ^|findstr ":2:"'
) Do Echo File:%%A Line:%%B Value:%%C
将结束:
File:two.txt Line:2 Value:two
File:three.txt Line:2 Value:two
答案 1 :(得分:0)
我认为检索每个文本文件第二行的最简单方法是input redirection <
:
> ".\logfile.log" (
for %%F in (".\*.txt") do (
set "FILE=%%~F"
setlocal EnableDelayedExpansion
< "!FILE!" (
for /L %%I in (1,1,2) do (
set "LINE=" & set /P LINE=""
)
echo 2nd line of "!FILE!": "!LINE!"
)
endlocal
)
)
由于你没有告诉我们你想用第二行做什么或者你想如何过滤它们,所以提供更多的帮助是不可能的......