我怎么能得到我的stats.txt文件的所有第二行?

Mem*_*r-X 2 batch-file

我目前有一个批处理文件的命令

for /F "skip=1 tokens=1 delims=\n" %i in (stats.txt) do echo %i
Run Code Online (Sandbox Code Playgroud)

stats.txt的内容是

Title = Subaru's Great Rehab Strategy
URL = http://dynasty-scans.com/chapters/subarus_great_rehab_strategy
Tags = Subaru x Tsukasa[|]Yuri[|]
No. of Pages = 3
Run Code Online (Sandbox Code Playgroud)

^注意:最后一行实际上是空白的

记事本+ +

代码行的想法是返回第二行URL.最终的目标是,我会在某种循环中运行这一行,通过一系列~12000 + stats.txt文件并将所有URL行收集到一个文件中

但是当我运行命令时,我得到了这个

CMD

正如你所看到的那样,它跳过了第一行,但它正在切断n输入dynasty和输出最后3行的位置.

现在,如果我删除delims=\n我得到相同的3行,但我没有得到空格之前的第一个字,这似乎表明价值delims是什么将一条线分成"令牌"然后我只抓住第一个(和空间)必须是默认的)

当我进入记事本++时,打开查找和替换对话框,将搜索模式转为扩展并查找"\ r \n"我将被带到每一行的末尾,这就是为什么我选择delims成为\n的假设整行一个令牌

所以我的问题是我怎样才能得到我的stats.txt文件的所有第二行?

roj*_*ojo 5

所述for /f循环已经把回车符和/或换行作为最终的线.无需将其指定为分隔符.随着delims=\n你实际上是在说所有文字反斜线字母n的应该被视为令牌的分隔符.如果你想要整条生产线,你想要的是什么"skip=1 delims=".

出于习惯,当用for /f循环读取文件的内容时,我发现usebackq只有在文件名/路径包含空格或符号的情况下启用它才有用.这允许您引用文件名以防止这种潜在的背叛.

@echo off
setlocal

for /F "usebackq skip=1 delims=" %%I in ("stats.txt") do if not defined URL set "URL=%%~I"
echo %URL%
Run Code Online (Sandbox Code Playgroud)

放入上下文,使用它来读取名为stats.txt的许多文件并将URL输出到单个集合中,将整个内容包含在另一个for循环中并启用延迟扩展.

@echo off
setlocal

>URLs.txt (
    for /R %%N in ("*stats.txt") do (
        for /F "usebackq skip=1 delims=" %%I in ("%%~fN") do (
            if not defined URL set "URL=%%~I"
        )
        setlocal enabledelayedexpansion
        echo(!URL!
        endlocal
        set "URL="
    )
)

echo Done.  The results are in URLs.txt.
Run Code Online (Sandbox Code Playgroud)

如果要从每行的开头删除"URL ="并仅保留地址,则可以尝试将for /F参数更改为"usebackq skip=1 tokens=3"如果所有文件都遵循相同的格式URLSpace=Spacehttp://etc..如果您不能依赖它,或者任何URL可能包含未编码的空格,您也可以更改echo(!URL!echo(!URL:*http=http!